我正在努力解决特定的布局要求。
我想要一个TextView
它居中。它是单行的,如果文本太长则使用省略号。在同一行,在它的右边,我想要一个小的ImageView
。 ImageView
的存在不得影响TextView
认为布局的水平中心。因此,尽管文本可能居中,但实际上中心线右侧的空间实际上比左侧少。
在RelativeLayout
中,直观易用的是:
<ImageView
android:id="@+id/image_view_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" />
<TextView
android:id="@+id/text_view_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/image_view_id"
android:layout_centerHorizontal="true"
android:singleLine="true"
android:ellipsize="middle" />
但这不起作用,因为您不能同时拥有android:layout_toLeftOf
和android:layout_centerHorizontal
。它表现得好像android:layout_centerHorizontal
不在那里。
我还尝试使用LinearLayout
android:layout_gravity
但没有成功。有可能吗?
答案 0 :(得分:0)
事实证明,接近我想要达到的目标非常简单:
<ImageView
android:id="@+id/image_view_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" />
<TextView
android:id="@+id/text_view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/image_view_id"
android:layout_marginLeft="@dimen/size_of_image_view"
android:singleLine="true"
android:gravity="center"
android:ellipsize="middle" />
将android:gravity="center"
与android:layout_width="match_parent"
一起使用文本在可用空间中。这并不完美,因为marginLeft
可以使文本在整个布局中居中,从而从左端抢占一点空间,但它足以满足我的目的。