【发布时间】:2017-07-20 08:10:21
【问题描述】:
我的xml 中有以下布局,其中将包含 3 个TextView,它们分别对齐left、centre 和right。
<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 设备版本 Marshmallow 版本的设备,一旦达到最大宽度,ellipsize 就会破坏文本,但对于具有lollipop 或kitkat 版本的设备,可能也会更低,,它不会因长文本而中断。ellipsize 中断在文本中的空格之后向下并显示ellipses
这是在低于Marshmallow的android版本中的外观:
考虑名称是FName LName
联系人:FName...
这是在大于 Marshmallow 的 android 版本中的外观:
联系人:FName LNa...
这是较低版本中的错误还是预期行为。或者有没有其他方法可以做到这一点?我想在所有设备中都有Marshmallowversion 文本。无论如何我可以做到这一点?
更新
事实证明,@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);
>=棉花糖装置
【问题讨论】:
-
尽可能贴截图
-
@Guruprasad Rao 椭圆大小在文本中的空格后分解并显示椭圆你确定只是和
F (space) Name,看看它是否像F...我不这么想 -
它取决于您的设备分辨率的 TextView 和 TextSize 中的空间。
-
@Guruprasad Rao 很好地克服这个问题,你可能希望有这样的东西,无论如何都要保留 N 个字符,然后......就像你所做的那样,对于任何使用自动调整大小文本的屏幕查看怎么样? stackoverflow.com/questions/41981272/…您的问题与设备屏幕尺寸有关,我猜是dpi,与操作系统版本无关
标签: android textview android-5.0-lollipop android-6.0-marshmallow android-4.4-kitkat