我在相对布局中有一个TextView和一个ImageView:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:paddingLeft="10dip" android:id="@+id/itemRoot"
android:clickable="false">
<TextView android:layout_width="wrap_content" android:text="TextView"
android:layout_height="wrap_content" android:id="@+id/itemTxt"
android:layout_alignParentLeft="true" android:layout_centerVertical="true"
android:singleLine="true"></TextView>
<ImageView android:id="@+id/delBtn" android:layout_height="wrap_content"
android:src="@drawable/delete" android:layout_width="wrap_content"
android:layout_alignParentRight="true" android:paddingRight="10dip"
android:layout_centerVertical="true"></ImageView>
</RelativeLayout>
但是,当文本变得太长时,它会与ImageView重叠,一直到屏幕的末尾,然后是“......”。但我希望它停止ImageView的开始。我无法将TextView一直延伸到ImageView,因为我下面还有一些背景看起来很难看。所以我尝试在2个视图之间添加一个空白的透明间隔:
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/spacer"
android:layout_alignTop="@+id/itemTxt" android:layout_alignBottom="@+id/itemTxt"
android:layout_toLeftOf="@+id/delBtn" android:layout_toRightOf="@+id/itemTxt"
android:minWidth="5dip" android:background="@android:color/transparent"></TextView>
但是,我仍有同样的问题。只要文本不太长,间隔就可以很好地工作。但是因为相对于ParentLeft定义了itemTxt,它只是将间隔推出屏幕,而且我也无法定义它与间隔符一样,因为SDK抱怨它是循环的。
有什么想法吗?
亚历
答案 0 :(得分:3)
这是你想要的吗?
将textview保持在Imageview上方:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
android:text="BLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah"/>
或者你的意思是彼此相邻吗?
使用线性布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/itemRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="10dip"
android:orientation="horizontal"
android:clickable="false">
<TextView
android:id="@+id/itemTxt"
android:layout_width="0dip"
android:layout_weight="1"
android:text="TextView"
android:layout_height="wrap_content"
android:singleLine="true"/>
<ImageView
android:id="@+id/delBtn"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingRight="10dip"
android:src="@drawable/delete"/>
</LinearLayout>
答案 1 :(得分:1)
在ImageView
之前声明TextView
,以便其ID已经可用并将以下属性添加到<TextView>
元素:android:layout_toLeftOf="@id/delBtn"
答案 2 :(得分:0)
首先,使用LinearLayout和权重而不是RelativeLayout并不是一个好主意,特别是在ListView中使用此LinearLayout的情况下。这样做的原因是,当您使用权重时,Android会进行两次传递以渲染LinearLayout。而这个事实可能破坏ListView的性能。 您必须在布局xml中的TextView之前声明ImageView,然后将此属性添加到TextView中,而不是使用权重:
android:layout_toLeftOf="@id/delBtn"
答案 3 :(得分:0)
在相对布局中这样的问题可以通过使用相应的属性固定终点(右,左,上,右)来解决
因为我们只需要限制宽度,所以按左右放置终点就足够了
所以只有两个属性可以做到
android:layout_toRightOf
。
android:layout_toLeftOf
所以如果你想要textView的话 id =地方 在两个视图之间(TextView,ImageView或任何其他) id =强度(左侧)和 id =时间(右侧) 以下是代码:
`<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/place"
android:layout_toRightOf="@id/intensity"
android:layout_toLeftOf="@id/time"
android:text="hokage's house konoha hidden leaf village naruto universe "
android:textStyle="bold"
android:layout_below="@id/proximity"
/>`
上面的代码给了我们: image with both atributes of width and large text
注意如果仅使用android:layout_toLeftOf
属性,那么在较小的文本文本上可能会被排列在右侧image with only one attribute and small text "hokage's home "
所以使用这两个属性更好 使用小文本也可以得到完美的结果