2

我有列表视图。Row 有 2 个(将来还会有更多)文本视图。我的目标是,如果第一个文本太长,则应显示椭圆,但第二个文本视图应始终可见。我暂时通过列解决了这个问题(权重和文本视图的百分比权重)。但我的目标是:当文本很短时,第二个文本视图应该出现在第一个文本视图旁边(参见第一个附加屏幕,它是假的 - 由第一个文本视图的硬编码 maxwidth 创建)。问题是当第一个文本太长时,第二个文本就会消失。我已经尝试了许多线性布局、相对布局、子布局等配置,但最后我卡住了。任何想法?这是行的简单 xml:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="Some very very long long long long long long long"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/TextView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#C03518"
        android:text="10"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

这是带有 relativelayout 的代码,它也不起作用:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/TextView01"
        android:layout_alignParentLeft="true"
    android:ellipsize="end"
    android:singleLine="true"           
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some very very long long long long long long long"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/TextView02"
        android:layout_toRightOf="@id/TextView01"
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#C03518"
        android:text="10"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>

目标

现实

问候

4

2 回答 2

0

您还可以使用这样的自定义流布局:http: //karimvarela.com/2012/12/01/android-creating-a-flowlayout/

于 2012-12-12T00:14:45.673 回答
0

您需要为列设置权重。像这样的东西:

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
    android:id="@+id/TextView01"
    android:layout_width="0"
    android:layout_height="wrap_content"
    android:layout_weight="9"
    android:ellipsize="end"
    android:singleLine="true"
    android:text="Some very very long long long long long long long"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/TextView02"
    android:layout_width="0"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="#C03518"
    android:text="10"
    android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

这意味着第一列将占据屏幕的 90%,第二列将占据 10%。或者,您可以使用表格布局并将stretch_columns 设置为0,1。就像是 :

<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:stretch_columns="0,1" >

<TableRow>

<TextView
android:id="@+id/TextView01"
android:layout_width="0"
android:layout_height="wrap_content"
android:layout_weight="9"
android:ellipsize="end"
android:singleLine="true"
android:text="Some very very long long long long long long long"
android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
android:id="@+id/TextView02"
android:layout_width="0"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#C03518"
android:text="10"
android:textAppearance="?android:attr/textAppearanceMedium" />

</TableRow>

</TableLayout>
于 2013-01-17T17:41:36.460 回答