【问题标题】:Constraint Layout - Textview overlaps other views when it grows in size约束布局 - Textview 在大小增加时会与其他视图重叠
【发布时间】:2019-01-27 20:07:48
【问题描述】:

上图显示了我希望我的视图看起来如何。 问题是当上部重力文本的大小增加时,它会将图像推出视图。我尝试使用障碍,但无法使其工作。 下图显示了我在实现这一目标方面走了多远。但现在这个问题是图像总是卡在最后。但我希望它紧挨着重力文字,当文字增加时,它应该卡在最后,重力文字应该增加高度。

<?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:id="@+id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="@dimen/dp_4">

            <TextView
                android:id="@+id/last_msg_tv"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_marginEnd="8dp"
                android:layout_marginBottom="8dp"
                android:textAlignment="viewStart"
                android:textColor="@color/color_grey_3"
                android:textSize="@dimen/sp_12"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="@+id/barrier9"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="@+id/title_tv"
                app:layout_constraintTop_toBottomOf="@+id/title_tv"
                tools:text="In the future, Earth is slowly becoming uninhabitable. Ex-NASA pilot Cooper, along with a team of researchers, is sent on a planet exploration mission to report which planet can sustain life." />

            <TextView
                android:id="@+id/title_tv"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="8dp"
                android:layout_marginEnd="8dp"
                android:textColor="@color/color_grey_2"
                android:textSize="@dimen/sp_16"
                android:textStyle="bold"
                app:layout_constraintEnd_toStartOf="@+id/imageView4"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                tools:text="Alpha CapriCod A" />

            <ImageView
                android:id="@+id/imageView4"
                android:layout_width="@dimen/dp_24"
                android:layout_height="@dimen/dp_24"
                android:layout_marginEnd="8dp"
                android:tint="@color/color_grey_5"
                app:layout_constraintEnd_toStartOf="@+id/user_count_tv"
                app:layout_constraintTop_toTopOf="@+id/title_tv"
                app:srcCompat="@drawable/mutiple_user_img" />

            <TextView
                android:id="@+id/user_count_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="8dp"
                app:layout_constraintBottom_toBottomOf="@+id/imageView4"
                app:layout_constraintEnd_toEndOf="@+id/barrier9"
                app:layout_constraintTop_toTopOf="@+id/imageView4"
                tools:text="1000" />

            <android.support.constraint.Barrier
                android:id="@+id/barrier9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:barrierDirection="left"
                tools:layout_editor_absoluteX="387dp"
                tools:layout_editor_absoluteY="8dp" />

        </android.support.constraint.ConstraintLayout>

    </android.support.v7.widget.CardView>

</android.support.constraint.ConstraintLayout>

【问题讨论】:

    标签: android android-constraintlayout


    【解决方案1】:

    您可以做的是将title_tv(具有wrap_content 宽度)、imageView4user_count_tv 放在具有packed 样式和0 偏差的水平链中,以使它们与左边。当title_tv 展开时,您需要使用app:layout_constrainedWidth="true" 来防止它推动其他视图超出范围。约束应该是这样的:

    <?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:id="@+id/constraintLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
    
            <android.support.constraint.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:padding="4dp">
    
                <TextView
                    android:id="@+id/last_msg_tv"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:textAlignment="viewStart"
                    android:textSize="12sp"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="@id/title_tv"
                    app:layout_constraintTop_toBottomOf="@id/title_tv"
                    tools:text="In the future, Earth is slowly becoming uninhabitable. Ex-NASA pilot Cooper, along with a team of researchers, is sent on a planet exploration mission to report which planet can sustain life." />
    
                <TextView
                    android:id="@+id/title_tv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="16dp"
                    android:layout_marginTop="8dp"
                    android:layout_marginEnd="8dp"
                    android:textSize="16sp"
                    android:textStyle="bold"
                    app:layout_constraintHorizontal_bias="0"
                    app:layout_constraintHorizontal_chainStyle="packed"
                    app:layout_constrainedWidth="true"
                    app:layout_constraintEnd_toStartOf="@id/imageView4"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:text="Alpha CapriA" />
    
                <ImageView
                    android:id="@+id/imageView4"
                    android:layout_width="24dp"
                    android:layout_height="24dp"
                    android:layout_marginEnd="8dp"
                    app:layout_constraintEnd_toStartOf="@id/user_count_tv"
                    app:layout_constraintStart_toEndOf="@id/title_tv"
                    app:layout_constraintTop_toTopOf="@id/title_tv"
                    app:srcCompat="@android:drawable/btn_star" />
    
                <TextView
                    android:id="@+id/user_count_tv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="8dp"
                    app:layout_constraintBottom_toBottomOf="@id/imageView4"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toEndOf="@id/imageView4"
                    app:layout_constraintTop_toTopOf="@+id/imageView4"
                    tools:text="1000" />
    
            </android.support.constraint.ConstraintLayout>
    
        </android.support.v7.widget.CardView>
    
    </android.support.constraint.ConstraintLayout>
    

    结果:

    还有更长的标题:

    【讨论】:

    • 非常有用,谢谢。
    【解决方案2】:

    试试这个方法,
    1. 在你的卡片视图的约束布局中,添加一个方向为水平的LinearLayout。
    2. 在该水平视图中,添加带有宽度和高度的标题作为换行上下文。
    然后添加 imageview 和 number textview。
    3. 将您的详细信息文本视图设置在该线性布局下方。
    完成。

    【讨论】:

    • 我必须严格使用约束布局,不,线性或相对视图。添加这两个会破坏使用约束的目的。
    猜你喜欢
    • 2018-03-15
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多