Android Неровный Дизайн - PullRequest
       16

Android Неровный Дизайн

0 голосов
/ 25 января 2019

У меня есть элемент, который должен оставаться в центре макета, и кнопка нужного размера.Ширина кнопки может быть переменной.

Следующий дизайн иллюстрирует два сценария.

Сценарий 1: Длинная текстовая кнопка scenario 1 Сценарий2: Маленькая текстовая кнопка scenario_2

В текущем решении есть невидимая дублируемая кнопка слева.Это не идеально, потому что внешний вид кнопки также может различаться в зависимости от региона.Я попробовал руководящие принципы, но это потребовало бы определить процент, и я предпочел бы, чтобы это было динамично.Барьеры тоже не работают, потому что мне нужно, чтобы они были отражены.

Какие-нибудь советы, как этого добиться?

Ответы [ 4 ]

0 голосов
/ 30 января 2019

В итоге я использовал другое решение.Я использовал два ориентира, один на 20%, а другой на 80%, чтобы определить области, где кнопка может расширяться до.

enter image description here

Когда нет кнопкидоступно, я использовал свойство app:layout_constrainedWidth="false", которое игнорирует ограничение и позволяет заголовку расширяться до доступного пространства.

enter image description here

Я использовал это решениепотому что мне может понадобиться несколько кнопок с разными призывами к действиям в зависимости от выбранного языка.Было бы сложно управлять несколькими скрытыми кнопками привязки.

0 голосов
/ 25 января 2019

Возможно, вы можете воспользоваться ConstraintLayoutStates: https://riggaroo.co.za/constraintlayout-constraintlayoutstates/

И иметь два макета по одному для каждого сценария.

0 голосов
/ 25 января 2019

Если я правильно понимаю ваши фотографии, вы хотите, чтобы на вашем экране было два элемента:

  1. Вид, центрированный на экране, может иметь любой размер ширины.

  2. Кнопка, расположенная справа от вида, которая также может иметь любой размер ширины.Вы хотите, чтобы эта кнопка была центрирована в пустом пространстве между представлением и краем правого экрана.

Вы можете попробовать это:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <TextView
        android:id="@+id/view"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:gravity="center"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:text="1"
        android:textColor="#FFFFFF"
        android:background="#000000"
        />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toEndOf="@+id/view"
        app:layout_constraintEnd_toEndOf="parent"
        android:text="2"
        />

</androidx.constraintlayout.widget.ConstraintLayout>
0 голосов
/ 25 января 2019

Попробуйте сделать ширину с 0dp и дать им вес и изменить это во время выполнения, возможно, они находятся в линейном расположении, которое является горизонтальным.

  LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)   
  button.getLayoutParams();
  params.weight = 1.0f; // afterwards you can do the same with changing the weight
  button.setLayoutParams(params);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...