вес макета в макете ограничения - PullRequest
0 голосов
/ 10 сентября 2018

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

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@color/colorAccent"
        android:layout_weight="1">

        <Button
            android:id="@+id/b1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="he" />

        <Button
            android:id="@+id/b4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="he" />



    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimaryDark"
        android:layout_weight="1">


        <Button
            android:id="@+id/b3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="hello2" />

    </LinearLayout>
</LinearLayout>

Я добавил скриншот ниже:

image

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

ConstraintLayout поддерживает концепцию весов LinearLayout, пока вы используете «цепочку», но я думаю, что в вашем случае вам лучше использовать Guideline для позиционирования вида на половину ширины .

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="HE"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"/>

    <Button
        android:id="@+id/two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="HE"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toEndOf="@+id/one"/>

    <android.support.constraint.Guideline
        android:id="@+id/guideline"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.5"/>

    <Button
        android:id="@+id/three"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="HELLO2"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toEndOf="@+id/guideline"
        app:layout_constraintEnd_toEndOf="parent"/>

</android.support.constraint.ConstraintLayout>

enter image description here

Атрибут Guideline app:layout_constraintGuide_percent указывает ему располагаться на полпути от любого края экрана (здесь вы можете использовать любое значение от 0 до 1). Атрибут android:orientation говорит ему рисовать вертикальную линию (в отличие от горизонтальной линии).

После того, как Руководство будет на месте, вы можете ограничить его другими представлениями так же, как и с любым другим типом представления.

0 голосов
/ 10 сентября 2018

в соответствии с this , чтобы задать процент ширины, вы можете использовать app:layout_constraintWidth_percent="your percent"

, поэтому вы можете использовать это:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center">

    <Button
        android:id="@+id/b1"
        android:layout_width="0"
        android:layout_height="wrap_content"
        android:text="he"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintWidth_percent="0.25" />

    <Button
        android:id="@+id/b4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="he"
        app:layout_constraintBottom_toBottomOf="@+id/b1"
        app:layout_constraintStart_toEndOf="@+id/b1"
        app:layout_constraintTop_toTopOf="@+id/b1"
        app:layout_constraintVertical_bias="1.0"
        app:layout_constraintWidth_percent="0.25" />

    <Button
        android:id="@+id/b3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="hello2"
        app:layout_constraintBottom_toBottomOf="@+id/b4"
        app:layout_constraintStart_toEndOf="@+id/b4"
        app:layout_constraintTop_toTopOf="@+id/b4"
        app:layout_constraintWidth_percent="0.5" />

</android.support.constraint.ConstraintLayout>

также для получения дополнительной информации выможете смотреть эти видео .

Обновление:

, если вы хотите использовать app:layout_constraintWidth_percent для одной кнопки, вы можете установить его для одной кнопки изатем установите `android: layout_width =" 0 "для другого.

также вы можете использовать chain: смотреть часть 3 видео

...