【问题标题】:Android - Ellipsize with right aligned viewAndroid - 具有右对齐视图的椭圆
【发布时间】:2012-07-15 12:43:02
【问题描述】:

如何实现以下布局,TextView 是 TextView,椭圆结束,View 是 wrap_content,紧邻 TextView ?

以下是布局应该如何表现的三个示例,具有不同的 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 列,最后一列是 hack:strechColumns 属性使其占用所有可用空间,因此第二个 TextView 始终紧邻第一个。 由于shrinkColumns 属性,第一个TextView 椭圆大小正确。

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

谢谢

【问题讨论】:

    标签: android layout alignment


    【解决方案1】:

    试试这个(我现在无法检查,但在我看来它应该可以工作):

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

    【讨论】:

    • 谢谢,但不幸的是,当左侧 TextView 太长时,使用此解决方案右侧 TextView 会被推离屏幕。
    【解决方案2】:

    试试这个:

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

    让我知道你的进展...

    【讨论】:

    • 感谢 yugidroid 的回答。您将alignParentRight="true" 放在第二个视图上。问题是视图总是与最右边对齐。我希望“my_view”位于“text1”的右侧。一旦第一个 TextView ("text1") 太长而无法容纳在父级中,"my_view" 就会右对齐,而 "text1" 会变成椭圆形。删除 alignParentRight="true" 并没有帮助,因为 my_view 将“text1”推到屏幕左侧。
    猜你喜欢
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多