我的应用有一个由Android-ViewPagerIndicator提供的TabPageIndicator
条带,有多个(当前有4个但不断增加)标签,不同的文字(以及标签宽度)。
在Nexus 4上,我的带有较长文字的标签会被截断。例如:'巨石阵' => ' Stonehen&#39 ;.有趣的是,标签的宽度都是一样的; 192像素。这是有道理的,因为Nexus4的宽度是768px(4 * 192),但mMaxTabWidth
字段设置为432px:
TabPageIndicator.java: 102
mMaxTabWidth = (int)(MeasureSpec.getSize(widthMeasureSpec) * 0.4f);
查看TabView::getMeasuredWidth()
在TabView::onMeasure()
(TabPageIndicator:273
)中调用时返回的结果所有文本(即使是那些未被截断的字符串)的测量宽度> 200px,显然大于192px
在我的Nexus 5设备上,每个选项卡都会渲染文本而不会截断,但选项卡的宽度都不同。这是预期的,因为选项卡具有不同长度的文本,因此较长的字符串需要更多空间。
起初我认为这是一个操作系统问题(以不同的方式计算标签宽度),但运行KitKat或Lollipop的Nexus 5正确渲染,而运行KitKat或Lollipop 的Nexus 4无法正确渲染。因此,我认为这是由较低分辨率引起的问题。
鉴于Nexus4上的TabPageIndicator
是HorizontalScrollView
,如果所有标签都不适合屏幕,那就可以了;用户可以滚动。文本正确呈现非常重要。
我需要做些什么才能在Nexus4设备上截断文本?