问题描述:
在开发中碰到一个问题,就是一行中有两个TextView,要求第一个TextView显示超过一行后显示为省略号,第二个TextView要求全部显示。
如图:
当第一个TextView不足一行时,显示效果如图:
但是当前面的TextView过长会导致后面的TextView显示不全,出现截断或者压缩问题。如果给第一个TextView固定长度的话,第二个TextView无法紧跟在第一个TextView的后面。
解决
直接看代码:
<LinearLayout
android:layout_width="wrap_content" // 重点1
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_store_dealer_name_top"
android:layout_width="0dp" //重点2
android:layout_height="wrap_content"
android:layout_weight="1" //重点3
android:ellipsize="end"
android:singleLine="true"
tools:text="texttexttexttexttexttexttexttexttext" />
<TextView
android:id="@+id/tv_dealer_type_top"
android:layout_width="28dp"
android:layout_height="14dp"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:text="text"
android:gravity="center"/>
</LinearLayout>
如上代码期中有几个重点的地方已经标注出来。
第一个TextView显示省略号的设置,这里就不再讲。
重点1:如果宽设置为match_parent的话,因为第一个TextView的权重为1,所有导致第一个TextView没有超过一行时,第二个TextView没有紧跟在前一个的后面,而是在行的末尾。
重点2与重点3:设置第一个TextView的权重为1,第二个TextView的权重为默认值0,因此系统会按照两个TextView的warp_content来分配宽度,在满足了第二个TextView的宽度后,剩下的都给了第一个TextView。