【问题标题】:Constraint layout's unknown behaviour约束布局的未知行为
【发布时间】:2019-07-13 21:52:10
【问题描述】:

我正在尝试使用约束布局制作一个简单的 UI。 UI 在布局编辑器中看起来不错,但是当我在设备上运行它时,整个 UI 都搞砸了。这里的 UI 用作 Recyclerview 的 row_item 以列出不同的项目 我认为我的代码中存在关于约束的问题。

我的布局编辑器中的简单布局:

我得到的输出:

layout.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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="@dimen/padding_8dp">

    <ImageView
        android:id="@+id/imgRow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/round"
        android:backgroundTint="@color/gray_light"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/txtTitleRow"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:paddingStart="@dimen/padding_16dp"
        android:text="@string/view_name"
        app:layout_constraintEnd_toStartOf="@+id/imgArrow"
        app:layout_constraintStart_toEndOf="@+id/imgRow"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/txtSubtitle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:paddingStart="@dimen/padding_16dp"
        android:text="@string/view_subtitle"
        app:layout_constraintEnd_toStartOf="@+id/imgArrow"
        app:layout_constraintStart_toEndOf="@+id/imgRow"
        app:layout_constraintTop_toBottomOf="@+id/txtTitleRow" />

    <ImageView
        android:id="@+id/imgArrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="@dimen/padding_4dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/ic_arrow_right" />

</android.support.constraint.ConstraintLayout>

【问题讨论】:

    标签: android android-constraintlayout


    【解决方案1】:

    只使用RelativeLayout

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?android:attr/selectableItemBackground"
        android:clickable="true"
        android:padding="8dp">
    
        <ImageView
            android:id="@+id/imgRow"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_alignParentStart="true"
            android:background="?android:attr/selectableItemBackground"
            android:backgroundTint="@color/text_gray"
            android:scaleType="fitCenter"
            android:src="@drawable/your_image"
            android:tint="@color/text_gray" />
    
        <TextView
            android:id="@+id/txtTitleRow"
            style="@style/TextAppearance.AppCompat.Medium"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:paddingStart="16dp"
            android:text="name"
            android:textStyle="bold"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/imgRow"
            android:layout_toLeftOf="@+id/imgArrow"/>
    
        <TextView
            android:id="@+id/txtSubtitle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:paddingStart="16dp"
            android:text="subtitle"
            android:layout_below="@+id/txtTitleRow"
            android:layout_toRightOf="@+id/imgRow"
            android:layout_toLeftOf="@+id/imgArrow"/>
    
        <!-- Remaining Note:Set border of button like playstore button-->
    
        <ImageView
            android:id="@+id/imgArrow"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:padding="4dp"
            android:scaleType="fitCenter"
            android:src="@drawable/your_image"
            android:tint="@color/text_black"
            android:layout_alignParentEnd="true"/>
    
    </RelativeLayout>
    

    【讨论】:

    • 不,这不是关于图像,而是文本视图没有正确约束。我想是的。
    • 试试我的代码。 textView 会自动调整
    • 对不起哥们,我放的第二张图片是错误的。查看更新后的问题。
    • 您是否尝试过我的代码,只是将 ImageView 的 layout_width 和 layout_height 调整为 80dp 的首选项。我也遇到了这个问题,这就是我解决它的方法
    • 问题依旧吗
    猜你喜欢
    • 2022-11-02
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    相关资源
    最近更新 更多