Android - 长椭圆文本视图覆盖下一个textview

时间:2012-12-11 22:57:06

标签: android android-layout textview

我有列表视图。 Row有2个(以及将来有更多)文本视图。我的目标是,如果第一个文本太长,则应显示椭圆,但第二个文本视图应始终可见。我通过列临时解决了这个问题(权重和文本视图的权重百分比)。但我的目标是:当文本很短时,第二个文本视图应该出现在第一个旁边(参见第一个附加屏幕,它是假的 - 由第一个文本视图的硬编码最大宽度创建)。问题是,当第一个文本太长时,第二个文本就会消失。我尝试了很多配置,包括linearlayout,relativelayout,sublayouts等,但最后我卡住了。任何的想法?这是行的简单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>

Target

Reality

此致

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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>