我有RelativeLayout,其中我将一个TextView放在一个按钮的左侧,该按钮是父对齐的。因此,当要在TextView中显示的文本比wrap_Content增加更多时,它会在Button上重叠。所以,我需要一个解决方案来显示下一行中超出的文本。
任何人都可以帮我解决这个问题吗?
在下面的布局中,如果TextView2的文本是“11111111111111111111111”,它将与TextView1重叠。怎么预防?
我的布局如下:
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_margin="10dp"
android:scaleType="fitXY"
android:src="@drawable/icon" >
</ImageView>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/imageView1"
android:layout_margin="5dp"
android:text="TextView"
android:textSize="22dp"
android:layout_toRightOf="@id/imageView1"
>
</TextView>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:focusable="false"
android:text="Button"
android:layout_alignTop="@+id/imageView1"
>
</Button>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/button1"
android:text="TextView222"
android:textSize="22dp"
android:layout_margin="5dp"
android:layout_alignTop="@+id/imageView1"
android:ellipsize="end"
>
</TextView>
在上面的布局中,如果TextView2的文本是“11111111111111111111111”,它将与TextView1重叠。如何防止
答案 0 :(得分:1)
只需将android:layout_toLeftOf="@+id/button"
添加到TextView即可防止它与您的按钮发生冲突。
看起来像这样:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/button"
android:text="11111111111111111111111111111111111111111111111111111111111111111111111111111111111"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Potatoe"/>
</RelativeLayout>
你已经改变了问题......但我也会回答这个问题。你可能试图将太多挤进一行。但是,让我们将您的布局更改为水平LinearLayout并使用几个layout_weight
属性:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher"/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:text="111111111111111111111111111111111"
android:textSize="22dp"/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:ellipsize="end"
android:text="222222222222222222222222222222222"
android:textSize="22dp"/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:text="Button"/>
</LinearLayout>
注意:由于您使用了textView2
属性,因此ellipse
不会换行到新行。祝你好运!
答案 1 :(得分:0)
基于@Sam解决方案,我添加了android:layoutDirection="rtl"
以取得理想的结果
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layoutDirection="rtl">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/button"
android:text="1111111111111111111111111111111111111"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Potatoe"/>
</RelativeLayout>