Android - Ellipsize with right aligned view

Viewed 1295

How can I achieve the following layout, with TextView being a TextView with ellipsize end and View being wrap_content and immediately to the right of TextView ?

Here are three examples of how the layout should behave, with different TextView width :

|[TextView] [View]              |

|[TextView TextView] [View]     |

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

[Edit]

The following TableLayout gives the correct behaviour :

<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>

The TableLayout uses 3 columns, the last being the hack : the strechColumns property makes it take all available space, so the second TextView is always immediatly to the right of the first one. The first TextView ellipsize correctly because of the shrinkColumns property.

However, I don't like the idea of using a TableLayout to achieve that. Does anybody know a better way ?

Thanks

2 Answers
Related