想要将layout_centerHorizo​​ntal与layout_toLeftOf混合使用

时间:2015-09-15 16:09:14

标签: android-layout

我正在努力解决特定的布局要求。

我想要一个TextView它居中。它是单行的,如果文本太长则使用省略号。在同一行,在它的右边,我想要一个小的ImageViewImageView的存在不得影响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_toLeftOfandroid:layout_centerHorizontal。它表现得好像android:layout_centerHorizontal不在那里。

我还尝试使用LinearLayout android:layout_gravity但没有成功。有可能吗?

1 个答案:

答案 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可以使文本在整个布局中居中,从而从左端抢占一点空间,但它足以满足我的目的。