android 版本 < 6.0 中的文本椭圆大小行为

text ellipsize behavior in android version < 6.0

我的 xml 中有以下布局,其中将包含 3 个 TextView,它们分别对齐 leftcentreright

<RelativeLayout
        android:id="@+id/relRow1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:text="@string/contact"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="@string/colon"
            android:id="@+id/colonRow1"/>

        <TextView
            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"/>
</RelativeLayout>

我现在面临的问题是,ellipsize 在 android 设备版本 < 6.0 时运行不佳或无法正常工作。我的意思是对于具有 Marshmallow 版本的设备,一旦达到最大宽度,ellipsize 就会破坏文本,但是对于具有 lollipopkitkat 版本的设备,可能也会更低, ellipsize在文本中space之后出现故障,显示ellipses,不会长时间中断文字.

这是 android 低于 Marshmallow 的版本:

考虑名字是 FName LName

Contact : FName...

这是 android 版本高于 Marshmallow 的样子:

Contact : FName LNa...

这是低版本中的错误还是预期行为。还是有其他方法可以做到这一点?我想在所有设备中都有 Marshmallow 版本文本。不管怎样,我能做到吗?

更新

事实证明,在@Charu 的评论之后,我的假设是错误的。它实际上隐藏了设备版本 < Marshmallow 中的长文本。我怎样才能克服这个问题?

现在我一直在使用下面的代码,但是当我们检查具有不同屏幕尺寸的不同设备时,它并没有按比例放大。我已附上屏幕截图以供参考。

if(android.os.Build.VERSION.SDK_INT<Build.VERSION_CODES.M && name.length()>20)
     name=name.substring(0,20)+"...";
else
     txtPrimaryContact.setEllipsize(TextUtils.TruncateAt.END);

>=棉花糖设备


< Marshmallow 设备 [具体来说是 Kitkat,但也在 Lollipop 中进行了测试]


您可能会告诉我 android:singleLine="true" 有点过时,这就是您使用 android:maxLines="1" 的原因,但请相信我,将此 android:singleLine="true" 添加到您的 textView 应该可以解决问题!