你的问题的答案的基础是这样的:
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
android:id="@+id/variable-size"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="middle"
android:lines="1"
android:singleLine="true"
android:text="short text" />
android:id="@+id/fixed-size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="none"
android:lines="1"
android:singleLine="true"
android:text="(s)" />
但是……请记住,我改变了LinearLayout的宽度:
android:layout_width="0dp"
android:layout_weight="1"
至
android:layout_width="wrap_content"
这是答案中非常重要的一部分.
我提供的代码是这样的:
[[short text][(s)]]
[[slightly longer text][(s)]]
[[really long ...ng text][(s)]]
它正确管理椭圆化,但不能引入“空视图”(____).如果我没有更改LinearLayout的layout_width,则椭圆化将正常工作((s)不会被推离屏幕),但文本对齐不正确.它看起来像这样:
[[short text ][(s)]]
[[slightly longer text ][(s)]]
[[really long ...ng text][(s)]]
因此,如果需要“空视图”,则需要实现它(例如),将LinearLayout嵌套在另一个内(并且这次“空视图”将是一个实际的视图).像这样:
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:id="@+id/variable-size"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:ellipsize="middle"
android:lines="1"
android:singleLine="true"
android:text="short text" />
android:id="@+id/fixed-size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="none"
android:lines="1"
android:singleLine="true"
android:text="(s)" />
android:id="@+id/empty_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
这将给您以下行为:
[[[short text][(s)]]____________]
[[[slightly longer text][(s)]]__]
[[[really long ...ng text][(s)]]]