小编Ste*_*rye的帖子

尽管ellipsize = end,但带有长文本的Textview会在GridLayout中推送其他视图

我的问题非常类似于如何获得布局,其中一个文本可以增长和椭圆化,但不会吞噬布局上的其他元素,但请阅读下面为什么我不能使用那里提出的TableLayouts.

我正在尝试创建一个基本上如下所示的listview行:

| TextView | 查看1 | 查看2 |

所有视图都包含可变宽度元素.TextView具有ellipsize ="end"设置.视图1应该对齐TextView的左侧,而视图2应该对齐到屏幕的右侧.因此,通常,View 1和View 2之间会有空格.随着TextView中的文本变长,TextView应该增长,将View 1推向右侧,直到没有剩下的空白.然后,ellipsize应该启动,在TextView中剪切文本并在末尾添加省略号("...").

所以,结果看起来应该是这样的:

+----------------------------------------+
| short text [view1]             [view2] |
+----------------------------------------+
| long text with ell ... [view1] [view2] |
+----------------------------------------+
Run Code Online (Sandbox Code Playgroud)

我试过了:

  • TableLayouts,但它们似乎在某些设备上使滚动速度极慢.
  • RelativeLayouts,但我有重叠的视图,或者view1或view2完全消失了.
  • GridLayouts,但TextView总是增长,直到它占据屏幕的整个宽度,从而将view1和view2推出屏幕.

这是我试过的GridLayout:

<GridLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:layout_gravity="left|fill_horizontal"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="Long text to demonstrate problem with TextView in GridLayout taking up too much space despite ellipsis" />

    <TextView
        android:layout_gravity="left"
        android:text="(view1)" />

    <TextView
        android:layout_gravity="right"
        android:text="(view2)" />
</GridLayout>
Run Code Online (Sandbox Code Playgroud)

视图1和视图2不是真正的TextViews,我只是在示例中使用它们来简化操作.

有没有办法在不使用TableLayouts的情况下实现这一目标?

编辑: 根据要求,这是我尝试用RelativeLayout解决这个问题.在这种情况下,TextView占据了屏幕的整个宽度,因此view1和view2都不可见.

<RelativeLayout
    android:layout_width="match_parent" …
Run Code Online (Sandbox Code Playgroud)

android android-gridlayout

40
推荐指数
2
解决办法
1万
查看次数

标签 统计

android ×1

android-gridlayout ×1