2012-07-16 77 views
5

如何实现以下布局,其中TextView是具有ellipsize结尾的TextView,并且视图是wrap_content并紧接着TextView的右侧?Android - Ellipsize右对齐视图

下面是布局应该如何表现的三个例子,具有不同的TextView宽度:

|[TextView] [View]    | 

|[TextView TextView] [View]  | 

|[TextView TextView T...] [View]| 

[编辑]

以下TableLayout提供了正确的行为:

<TableLayout 
    android:id="@+id/upper_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_toLeftOf="@+id/alert_button" 
    android:shrinkColumns="0" 
    android:stretchColumns="2" > 

    <TableRow> 

     <TextView 
      android:id="@+id/name_textview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:ellipsize="end" 
      android:includeFontPadding="false" 
      android:lines="1" 
      android:paddingTop="2dp" 
      android:scrollHorizontally="true" /> 

     <TextView 
      android:id="@+id/unread_count_textview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dp" 
      android:gravity="center" 
      android:includeFontPadding="false" 
      android:paddingBottom="0dp" 
      android:paddingLeft="5dp" 
      android:paddingRight="5dp" 
      android:paddingTop="2dp" /> 
    </TableRow> 
</TableLayout> 

TableLayout使用3列,最后是黑客:strechColumns属性使它占用所有可用空间,所以第二个TextView总是立即在第一个的权利。 由于shrinkColumns属性,所以第一个TextView椭圆。

但是,我不喜欢使用TableLayout来实现这一点的想法。 有人知道更好的方法吗?

感谢

+0

这是一个列表吗? – Yury 2012-07-16 16:43:16

+0

是的,这是一个行布局。 – gdelente 2012-07-16 17:05:47

回答

0

试试这个(我现在不能检查它,但我的角度来看,这应该工作):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="6dip" > 

    <TextView 
     android:id="@+id/my_txtvw_txtvw" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:ellipsize="marquee" 
     android:maxLines="1" /> 

    <TextView 
     android:id="@+id/my_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/my_txtvw_txtvw" 
     android:maxLines="1" /> 

</RelativeLayout> 
+0

感谢但不幸的是,使用此解决方案时,当左边的TextView太长时,正确的TextView会从屏幕上被推下。 – gdelente 2012-07-16 19:14:50

0

试试这个:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/text1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@+id/my_view" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:layout_alignParentLeft="true" 
     android:text="blablabla blablabla" 
     android:layout_centerVertical="true" 
     android:gravity="center_vertical|left" /> 

    <TextView 
     android:id="@+id/my_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:maxLines="1" /> 

</RelativeLayout> 

我不是当然,如果你想要android:ellipsize="end"android:ellipsize="marquee"。我认为这个布局对你来说可以正常工作,只需要替换所需的ellipsize值id即可。

让我知道你的进步...

+0

感谢yugidroid为您的答案。 您在第二个视图中放置了alignParentRight =“true”'。问题在于视图总是与最右侧对齐。 我希望“my_view”恰好在“text1”的右侧。一旦第一个TextView(“text1”)太长而无法放入父级内部,“my_view”就会对齐并且“text1”被省略。 删除'alignParentRight =“true”'没有帮助,因为“text1”被my_view从屏幕左侧推出。 – gdelente 2012-07-17 07:47:15