繁体   English   中英

带有约束布局的 TextView 走出屏幕

[英]TextView going out of screen with constraintLayout

我正在使用ConstraintLayout在我的应用程序中创建下面的 xml。 如您所见,我的第一项很好,但是在第二项中,我的textView的某些部分不在屏幕上!

这是我的XML代码:

<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/ly_user"
        android:padding="8dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    <ImageView
            app:layout_constraintRight_toRightOf="parent"
            android:id="@+id/im_user_icon"
            android:layout_width="@dimen/default_message_icon_size"
            android:layout_height="@dimen/default_message_icon_size"
            android:src="@drawable/user_pacific"/>

    <ImageView
            app:layout_constraintTop_toBottomOf="@+id/im_user_icon"
            app:layout_constraintRight_toLeftOf="@+id/im_user_icon"
            android:id="@+id/im_user_arrow"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/arrow_bg1"/>

    <View
            android:id="@+id/view_user_guidLine"
            android:layout_width="1dp"
            android:layout_height="0dp"
            app:layout_constraintLeft_toLeftOf="@id/im_user_arrow"
            app:layout_constraintRight_toRightOf="@id/im_user_arrow"/>

    <TextView
            app:layout_constraintTop_toBottomOf="@+id/im_user_icon"
            app:layout_constraintRight_toLeftOf="@+id/view_user_guidLine"
            android:id="@+id/tv_user_message"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:padding="8dp"
            android:minWidth="@dimen/default_message_textarea_width"
            android:minHeight="@dimen/default_message_textarea_height"
            android:background="@drawable/bg_right_text"
            android:textColor="@android:color/white"/>


</android.support.constraint.ConstraintLayout>

我知道我可以解决这个问题,将下面的行添加到textView ,但我需要我的textViewwrapContent

 app:layout_constraintLeft_toLeftOf="parent"

在此处输入图像描述

您可以将TextView's宽度设置为wrap_content ,但是要防止其扩展到屏幕之外,您还需要添加左侧约束,并使用app:layout_constrainedWidth="true"来实施约束。

现在,要使TextView靠右,您需要添加app:layout_constraintHorizontal_bias="1" ,它将使其与右约束对齐。

因此,总而言之,这些都是TextView所需的更改:

app:layout_constraintLeft_toLeftOf="parent"
app:layout_constrainedWidth="true"
app:layout_constraintHorizontal_bias="1"
android:layout_width="wrap_content"

在您的TextView代码中添加以下这些行

app:layout_constraintWidth_percent="0.6"

第一行layout_constraintWidth_percent是手机屏幕宽度的60%,您可以根据需要进行更改。

可以接受的答案有效,但在我这边,我使用android:layout_width="0dp"因为我的TextView位于两个元素的中间。

<TextView
        android:id="@+id/my_id_text_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="@string/long_text"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/second_vertical_divider_view"
        app:layout_constraintStart_toEndOf="@+id/first_vertical_divider_view"
        app:layout_constraintTop_toTopOf="parent" />

接受的答案对我来说没有帮助。 替代解决方案可能如下所示:

<ConstraintLayout>

    <TextView
         android:id="@+id/title"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:ellipsize="end"
         android:maxLines="2"
         app:layout_constraintEnd_toStartOf="@+id/option_info"
         app:layout_constraintHorizontal_chainStyle="packed"
         app:layout_constraintHorizontal_weight="1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintWidth_max="wrap" />

    <ImageView
         android:id="@+id/option_info"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:src="@drawable/ic_info"
         app:layout_constraintBottom_toBottomOf="@+id/title"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toEndOf="@+id/title"
         app:layout_constraintTop_toTopOf="@+id/title" />

</ConstraintLayout>

这个想法是通过创建一个链来防止一个视图在扩展时推动另一个视图,并添加一些约束参数以将受影响的视图保存在视图的边界中。 希望它仍然会帮助别人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM