在我的应用中,我经常以下列布局动态更新TextView的内容:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/container_view"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/top_padding"
android:paddingRight="@dimen/side_padding"
android:paddingBottom="@dimen/top_padding"
android:paddingLeft="@dimen/side_padding">
<TextView
android:id="@+id/breadcrumbs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/title_showcase"
style="@style/ShowcaseBreadcrumbs"
android:ellipsize="start"
android:singleLine="true" />
<it.sephiroth.android.library.widget.HListView
android:id="@+id/item_carousel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_marginTop="-40dp"
android:listSelector="@android:color/transparent"
app:hlv_dividerWidth="10dp"
/>
</LinearLayout>
LinearLayout
中的填充全部为70dp
,HListView
为HorizontalVariableListView。这是风格,但我怀疑它是否有用:
<style name="ShowcaseBreadcrumbs">
<item name="android:textSize">32sp</item>
<item name="android:background">@drawable/bottom_border_thin</item>
<item name="android:textColor">@color/white</item>
<item name="android:layout_marginBottom">10dp</item>
</style>
我使用基本TextView.setText(String)
更新TextView的内容。不幸的是,当文本足够长时,TextView不会因为溢出文本在屏幕上运行而无法进行任何操作:
如何强制TextView显示其内容的结尾并在开始时正确地进行椭圆化?
答案 0 :(得分:2)
显然我遇到了Android的省略号功能和辅助功能服务的错误。感谢Android错误跟踪器上的recent bug post,我发现LastPass辅助功能服务(扫描应用程序以查找可能的用户名/密码框以进行自动填充)是将TextView的内容跳回到开头。关闭LastPass服务解决了这个问题。
查看此屏幕录制我拍摄的错误(请注意按钮上方的TextView):https://www.youtube.com/watch?v=7VoEfx0rgys
我还使用Talkback服务对其进行了测试 - 当服务开启时,TextView再次跳转,就像在视频中一样。关闭服务并重新启动应用程序会产生预期效果。
请注意,我不需要更改XML中的任何内容 - 将服务切换为Off足以解决问题。