我有一个ListView
,显示了一堆作业。 ListView
项使用FrameLayout
放置两个TextViews
。第一个TextView
左对齐,第二个TextView
右对齐。 (两个都垂直居中对齐。)第一个显示作业描述的摘要,第二个显示到期日期。
我想做的是使它的到期日占据所需的空间,而说明将占满剩余的空间,如下所示:
| ------------------------------------------------- --- |
|阅读第15-35页,更新时间... 5月4日,星期五|
| ------------------------------------------------- --- |
现在,说明文字将继续与日期重叠。但是它将在该行的末尾截断。
无论如何,我可以用XML做到这一点,还是必须在设置getView
值之前(大概在我的ojit_code调用中)缩短字符串,从而在代码中做到这一点?如果我在代码中这样做,我将不得不计算字符串将占用的水平空间量,以弄清描述需要多短。看起来可能会变得凌乱...
任何其他有关如何完成此操作的建议,将不胜感激!
最佳答案
代替FrameLayout,这是LinearLayout或RelativeLayout结合ellipsize的理想场所:
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
...
android:width="0dp"
android:height="wrap_content"
android:layout_weight="1"
android:ellipsize="end" />
<TextView
...
android:width="wrap_content"
android:height="wrap_content"
android:layout_weight="0" />
</LinearLayout>
或交替
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
...
android:id="@+id/secondTV"
android:width="wrap_content"
android:height="wrap_content"
android:layout_weight="0" />
<TextView
...
android:width="0dp"
android:height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/secondTV"
android:ellipsize="end"/>
</RelativeLayout>