Android вертикальный барьер не выравнивается - PullRequest
0 голосов
/ 08 февраля 2019

У меня проблемы с выравниванием TextView s и Barrier в Android.Каким-то образом барьер остается / придерживается левого или правого края родительского макета.См. Синюю и зеленую линии на изображении.

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

enter image description here

Макет XML

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/cover_photo"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="24dp"
        android:scaleType="centerCrop"
        android:src="@drawable/ferrari"
        app:layout_constraintBottom_toBottomOf="@id/user_avatar"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0" />

    <ImageView
        android:id="@+id/user_avatar"
        android:layout_width="96dp"
        android:layout_height="96dp"
        android:layout_marginStart="16dp"
        android:background="#FFFFFF"
        android:padding="1dp"
        android:scaleType="centerCrop"
        android:src="@drawable/user_avatar"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.3" />

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:text="Lora Mitchell's Car"
        android:textColor="#000"
        android:textSize="24sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/user_avatar" />

    <TextView
        android:id="@+id/manufacturer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="Manufacturer"
        app:layout_constraintStart_toStartOf="@+id/username"
        app:layout_constraintTop_toBottomOf="@+id/username" />

    <TextView
        android:id="@+id/model"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="Model"
        app:layout_constraintStart_toStartOf="@+id/username"
        app:layout_constraintTop_toBottomOf="@+id/manufacturer" />

    <TextView
        android:id="@+id/type"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="Type"
        app:layout_constraintStart_toStartOf="@+id/username"
        app:layout_constraintTop_toBottomOf="@+id/model" />

    <TextView
        android:id="@+id/bore_stroke"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="Bore and stroke"
        app:layout_constraintStart_toStartOf="@+id/username"
        app:layout_constraintTop_toBottomOf="@+id/type" />

    <TextView
        android:id="@+id/max_power"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="Maximum power**"
        app:layout_constraintStart_toStartOf="@+id/username"
        app:layout_constraintTop_toBottomOf="@+id/bore_stroke" />

    <TextView
        android:id="@+id/specific_power"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="Specific power output"
        app:layout_constraintStart_toStartOf="@+id/username"
        app:layout_constraintTop_toBottomOf="@+id/max_power" />

    <TextView
        android:id="@+id/max_torque"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="Maximum torque"
        app:layout_constraintStart_toStartOf="@+id/username"
        app:layout_constraintTop_toBottomOf="@+id/specific_power" />

    <TextView
        android:id="@+id/type_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:text="V8 - 90°"
        app:layout_constraintEnd_toEndOf="parent"
        tools:layout_editor_absoluteY="351dp" />

    <android.support.constraint.Barrier
        android:id="@+id/barrier"
        app:barrierDirection="right"
        app:constraint_referenced_ids="bore_stroke,manufacturer,max_torque,model,max_power,type,specific_power" />


</android.support.constraint.ConstraintLayout>

1 Ответ

0 голосов
/ 08 февраля 2019

Я не уверен, что барьер - лучший способ отделить левую и правую части экрана от документации:

Если размеры виджетов изменятся, то барьер будет автоматически перемещаться в соответствии с его направлением.чтобы получить самый экстремальный виджет:

В моих макетах, использующих макет ограничений, когда я хочу разделить правую и левую части экрана, я обычно использую руководство следующим образом:

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

Я ограничиваю все свои взгляды руководством, и оно работает как шарм.

...