Android 元素之间的约束转化为相对性约束

Android 元素之间的约束转化为相对性约束,android,android-layout,android-relativelayout,Android,Android Layout,Android Relativelayout,我的布局中包含此部分: <RelativeLayout android:id="@+id/title_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="@dimen/keyline_4" android:paddingTop="10dp" android:paddingRigh

我的布局中包含此部分:

<RelativeLayout

     android:id="@+id/title_layout"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:paddingLeft="@dimen/keyline_4"
     android:paddingTop="10dp"
     android:paddingRight="@dimen/keyline_4"
     app:layout_constraintTop_toBottomOf="@+id/avatar_layout"
     android:visibility="visible">

     <androidx.appcompat.widget.AppCompatImageView
              android:id="@+id/flag_icon"
              android:layout_width="26dp"
              android:layout_height="26dp"
              android:layout_marginRight="@dimen/keyline_0"
              android:layout_toLeftOf="@+id/title"
              android:src="@drawable/ic_modify"
              android:visibility="visible"/>

              <androidx.appcompat.widget.AppCompatTextView
                     android:id="@+id/title"
                     style="@style/ProfileTitle"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_centerInParent="true"
                     android:text="TEST TEST"
                     android:ellipsize="end"
                     android:maxLines="1"
                     android:singleLine="true" />

                    <androidx.appcompat.widget.AppCompatImageView
                        android:id="@+id/update_icon"
                        android:layout_width="@dimen/keyline_4"
                        android:layout_height="@dimen/keyline_4"
                        android:layout_toRightOf="@+id/title"
                        android:layout_marginLeft="@dimen/keyline_0"
                        android:src="@drawable/ic_modify"
                        android:visibility="visible"/>

 </RelativeLayout>
布局编辑器的结果是:一切正常

但是如果文本像这样长,图标就会消失

如何将图标保持在屏幕的左侧和右侧?文本应包装在这两个图标之间


多谢各位

现在,您正在将文本约束到父对象,将图像约束到文本。您需要将图像约束到父对象,将文本约束到图像

要实现这一点,您需要使用ConstraintLayout而不是RelativeLayout。可能是这样的我在使用dimen的地方添加了我自己的值:

这将为您提供类似于长文本的内容:

还有一些简短的文字:


这对我来说是一个具有挑战性的问题。经过几个小时的努力,我无法通过线性布局、相对布局或约束布局来获得解决方案。我也期待着看到一个解决方案的任何一个提到的布局或任何其他

同时,如果您的时间紧迫,我建议您选择一种变通方法,而不是解决方案。也就是说,您可以考虑使用AppCupTeExVIEW的DababyStand和DababelEnter属性,因此生成的布局如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/title_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center" >

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:drawableStart="@mipmap/ic_modify"
        android:drawableEnd="@mipmap/ic_modify"
        android:text="TEST TEST TEST TEST TEST TEST TEST TEST"
        android:ellipsize="end"
        android:maxLines="1"
        android:singleLine="true" />

</RelativeLayout>
注意,对于测试,我使用了默认Android Studio项目附带的@mipmap/ic_启动器。对于每个屏幕分辨率组,ic_启动器的大小为正方形。您可能需要对ic_modify执行相同的操作,以防止其宽度拉伸


如果适用,另一个选项可能是创建自定义视图。

图2不是OP想要的。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/title_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center" >

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:drawableStart="@mipmap/ic_modify"
        android:drawableEnd="@mipmap/ic_modify"
        android:text="TEST TEST TEST TEST TEST TEST TEST TEST"
        android:ellipsize="end"
        android:maxLines="1"
        android:singleLine="true" />

</RelativeLayout>