在 Android 版本 < 6.0 中的文本省略行为

10 浏览
0 Comments

在 Android 版本 < 6.0 中的文本省略行为

我在我的xml中有以下布局,其中包含3个TextView,它们分别对齐左对齐、居中和右对齐。

android:id="@+id/relRow1"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:text="@string/contact"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:text="@string/colon"

android:id="@+id/colonRow1"/>

android:id="@+id/txtPrimaryContact"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentEnd="true"

android:layout_alignParentRight="true"

android:layout_toEndOf="@+id/colonRow3"

android:layout_toRightOf="@+id/colonRow3"

android:ellipsize="end"

android:gravity="end"

android:maxLines="1"

android:text="Joe SmithMartinWilliamCathcsdsdsdadas"/>

我现在面临的问题是,在Android设备版本小于6.0的情况下,ellipsize不正常或不按预期工作。我的意思是对于使用Marshmallow版本的设备,当达到最大宽度时,ellipsize会将文本截断,但对于使用lollipop或kitkat版本(可能也适用于更低版本)的设备,ellipsize在文本中的空格后断开,并显示省略号,它不会截断长文本。

以下是在Marshmallow版本以下的Android版本中的外观:

假设姓名是FName LName

Contact : FName...

以下是在Marshmallow版本以上的Android版本中的外观:

Contact : FName LNa...

这是较低版本的一个错误还是预期行为。或者还有其他方法可以实现这一点吗?我想在所有设备上都使用Marshmallow版本的文本。我该怎么做?

更新

经过@Charu评论后,事实证明我的假设是错误的。实际上,在小于Marshmallow版本的设备上,它会隐藏长文本。我该如何解决这个问题?

目前,我正在使用以下代码,但在不同屏幕大小的不同设备上检查时,它无法扩展。我附上了参考的屏幕截图。

if(android.os.Build.VERSION.SDK_INT20)

name=name.substring(0,20)+"...";

else

txtPrimaryContact.setEllipsize(TextUtils.TruncateAt.END);

>= Marshmallow设备

< Marshmallow设备[具体指的是Kitkat,但在Lollipop中也测试过]

0
0 Comments

在Android版本小于6.0中,出现了text ellipsize行为不正常的问题。这个问题的原因是使用了android:maxLines="1"属性,但没有添加android:singleLine="true"属性。解决这个问题的方法是在textView中添加android:singleLine="true"属性。这个解决方法非常简单,但是在开发文档中却没有明确提到。非常感谢提供解决方法的朋友,解决了我长时间以来的困扰。同时也感谢其他朋友对该解决方法的确认和赞同。这个解决方法还可以解决在Android 4.4上激活talkback功能时,ellipsize无法正常工作的问题。非常感谢大家的帮助!祝大家编码愉快!

0