Ste*_*rye 40 android android-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)
我试过了:
这是我试过的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"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/rl0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
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:id="@+id/rl1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/rl0"
android:layout_marginLeft="10dp"
android:text="(view1)" />
<TextView
android:id="@+id/rl2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/rl1"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dp"
android:text="(view2)" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
Yun*_*tao 18
我似乎找到了一个潜在的解决方案来阻止GridLayout中的TextView无限增长并推出其他视图.不确定之前是否已记录过.
您需要使用fill layout_gravity并在需要进行椭圆化处理的长TextView上设置任意layout_width或width.
android:layout_gravity="fill"
android:layout_width="1dp"
Run Code Online (Sandbox Code Playgroud)
适用于GridLayout和android.support.v7.widget.GridLayout
我是LinearLayouts的忠实粉丝,所以这是我的建议:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
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_width="wrap_content"
android:layout_height="wrap_content"
android:text="(view1)" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="(view2)" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14083 次 |
| 最近记录: |