【问题标题】:Android vertical barrier is not aligningAndroid垂直障碍未对齐
【发布时间】:2019-07-02 09:59:26
【问题描述】:

我无法在 Android 中对齐 TextViews 和 Barrier。不知何故,屏障停留/粘在父布局的左边缘或右边缘。看图片中的蓝线和绿线。

我想按照图像中红线的方式对齐屏障,以便它可以分隔左右内容。

布局 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>

【问题讨论】:

    标签: android barrier


    【解决方案1】:

    我不确定障碍是从文档中分离屏幕左右的最佳选择:

    如果widgets尺寸发生变化,barrier会根据它的方向自动移动,得到最极端的widget:

    在我使用约束布局的布局中,当我想分隔屏幕的左右部分时,我通常以这种方式使用指南:

    <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" />
    

    我将我的所有观点都限制在指南中,它就像魅力一样。

    【讨论】:

    • 我明白了。但是指南不是正确的方法,或者我可能不知道如何设置和约束左侧文本以保持与它相同的距离。正如我尝试过的那样,它始终保持对父布局的约束。所以我还不确定在这种情况下使用指南。
    • guidline 不正确是什么意思?它有什么问题?
    • 我希望将指南或障碍贴在标题文本的右侧。请问导游能做到吗?如果比我需要学习如何。
    • 你可以这样做,例如,放置一些视图和指南并将视图的右侧拖动到指南的左侧或相反,这样你的视图将坚持指导方针,我希望这会有所帮助
    猜你喜欢
    • 1970-01-01
    • 2013-09-15
    • 2019-05-20
    • 1970-01-01
    • 2012-01-09
    • 2013-04-17
    • 2014-12-05
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多