我正在尝试获取一行类似
的文本foofoofoo - barbarbar
但我希望椭圆foo和bar如果它不适合一行。 即我正试图缩短它们。
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/text_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:maxWidth="0dip"
android:layout_weight="1"
android:textColor="#ffffff"
android:singleLine="true"
android:ellipsize="true"
android:text="foofoofoofoo" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text=" - " />
<TextView
android:id="@+id/text_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="0dip"
android:layout_weight="1"
android:textColor="#ffffff"
android:singleLine="true"
android:ellipsize="true"
android:text="barbarbarbar" />
</LinearLayout>
请跟我说这部分工作。
将TextView
的{{1}}设置为layout_width
而将0dip
设置为layout_weight
意味着它们将占用每个可用空间的50%。
将1
设置为singleLine
和将true
设置为ellipsize
意味着如果文字大于 foofoo ... 容器。
因此我的结果(如果文字较长)应为
foofoo .. - barbar ..
它是什么!所以这很有效。
如果第一个true
(id:text_1)的文字小于TextView
给出的50%,我现在正在尝试修复的情况和layout_width="0dip"
我希望它layout_weight="1"
。否则看起来像:
foo 空格 - barbar ..
我想要
foo - barbarbar
这就是我更改wrap_content
并添加layout_width="wrap_content"
的原因,但这不起作用!似乎忽略了我说android:maxWidth="0dip"
并仍然给予这个观点50%!
我知道您需要为wrap_content
添加android:adjustViewBounds="true"
才能正常工作,但这没有任何影响。
答案 0 :(得分:10)
这是我能做的最好的,尝试更改字符串以查看它是否按预期工作。
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:shrinkColumns="0,2"
android:stretchColumns="0,2">
<TableRow>
<TextView android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
android:text="foofoofoo"/>
<TextView android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:gravity="center_horizontal"/>
<TextView android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
android:text="barbarbarbarbarbarbarbarbarbarbarbar"/>
</TableRow>
</TableLayout>
答案 1 :(得分:2)
很难确切地说出你想要什么,但我相信答案是除非你在代码中动态调整你的布局,否则你不能这样做。原因是因为您要求系统以多种不同的方式工作。
首先,当视图中的文本数量相同时,您希望视图平等地共享空间。
其次,当其他视图中的文本较少时,您希望 NOT 的视图平均共享空间。
此处还有其他多种情况可以按照您想要的任何方式处理。然而,我要传达的是,您要求使用相同的布局以不同的方式处理事物,这就是为什么您无法通过单一布局实现此目的。