我想在一个列表项中让两个TextView
元素并排显示,其中一个对齐左侧,另一个对齐右侧。就像这样:
|<TextView> <TextView>|
(|
表示屏幕的边缘)
但是,左侧的 TextView
可能会有太长无法适应屏幕的内容。在这种情况下,我希望它可以省略但仍然显示整个右侧的 TextView
。类似于:
|This is a lot of conte...<TextView>|
我已经尝试了许多次,使用了LinearLayout
和RelativeLayout
,唯一的解决办法是使用RelativeLayout
,并在左侧的TextView
上加上marginRight
,使其足够大以清除右边的TextView
。然而,正如您所想象的那样,这并不是最佳解决方案。
还有其他的解决方案吗?
最终,LinearLayout
的解决方案:
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="horizontal"
>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:inputType="text"
/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="0"
android:layout_gravity="right"
android:inputType="text"
/>
</LinearLayout>
旧的、TableLayout
的解决方案:
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:shrinkColumns="0"
>
<TableRow>
<TextView android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
/>
<TextView android:id="@+id/date"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:ellipsize="none"
android:gravity="right"
/>
</TableRow>
</TableLayout>