如何避免android中的相对布局重叠视图?

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:textSize="30sp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView1" android:textSize="20sp" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView2" android:textSize="20sp" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView3" android:textSize="20sp" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView4" android:textSize="20sp" /> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView5" android:textSize="20sp" /> <TextView android:id="@+id/textView7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView6" android:textSize="20sp" /> <TextView android:id="@+id/textView8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView7" android:textSize="20sp" /> <TextView android:id="@+id/textView9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView8" android:textSize="20sp" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView9" /> <TextView android:id="@+id/textView10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="商店圖片:" android:textSize="15sp" android:layout_alignParentTop="true" android:layout_alignLeft="@id/imageView1" /> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@id/textView10" android:contentDescription="@string/top" /> </RelativeLayout> 

 Simple output: textview1 textview9 textview2 imageview1 . . . button1 

上面的布局是一个水平分割的页面,左边是一个textview和button的列表,右边是一个图片视图。 问题是:当textview内容太长时,imageview会重叠它的内容,除了使用bringtofront(),是否有任何方式(在XML)来调整文本视图的宽度,如果它重叠与图像视图?

Solutions Collecting From Web of "如何避免android中的相对布局重叠视图?"

如果您正在使用这种devise,则应使用线性布局。 并使用表行来显示这种视图。

并使用重量,以便您的视图不会与其他视图重叠。 尝试像这样:

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:weightSum="10"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:textSize="30sp" android:text="test" android:layout_weight="5" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView1" android:textSize="20sp" android:text="test" android:layout_weight="5"/> </TableRow> </LinearLayout> </ScrollView> 

希望能帮助到你!!

在第一个项目中使用layout_toStartOf,第二个项目+ id在双引号下

 <?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="match_parent" android:orientation="horizontal" > <TextView android:id="@+id/email" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_toStartOf="@+id/selectaccount" android:text="very long text which used to overlap over radio button" android:textAppearance="?android:attr/textAppearanceMedium" /> <RadioButton android:id="@+id/selectaccount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" /> </RelativeLayout> 

在textview中注意这个参数

 android:layout_toStartOf="@+id/selectaccount" 

XML从上到下被读取

所以这是如何在Android中呈现布局

  • android:layout_toStartOf =“ @ id / item表示该项目 此行上方定义
  • android:layout_toStartOf =“ @ + id / item表示该项目将在稍后的某处出现

将所有文字alignment像lastone一样左alignment: android:layout_toLeftOf="@id/imageView1" imageView1 android:layout_toLeftOf="@id/imageView1"

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:weightSum="1.0" > <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight=".5" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Medium Text" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Medium Text" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight=".5" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> </LinearLayout> 

你可以通过点击“推断约束”来解决这个问题,按照显示方式的图片:

如何AndroidStudio

我有一个类似的问题,并尝试几乎所有build议在这里和其他类似的线程。

为我做的另一件事是补充:

 android:layout_toStartOf="@+id/youroverlappeditem" 

所以重叠项目将只运行到重叠项目。

layout_toLeftOf是不够的

当然ellipsize="end"是合适的。

矿是一个相对布局的recyclerview