我有一个文本视图,其中包含单个带衬里的阿拉伯语(从右到左)文本。文本内容随时间增加,最后(最左侧)部分应始终显示。水平滚动条最初设置为右侧,并随着文本的增加自动滚动到左侧。
以下代码适用于2.3 Android手机。 这来自layout.xml
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="none"
android:fadingEdge="horizontal"
android:gravity="right"
android:scrollHorizontally="true"
android:scrollbars="horizontal"
android:singleLine="true"
android:text="@string/txt_start"
android:textAppearance="?android:attr/textAppearanceLarge" />
我在我的Activity
的onCreate()方法中有这个tv = (TextView) findViewById(R.id.textView1);
tv.setMovementMethod(new ScrollingMovementMethod());
问题是具有android 4.0+的手机上的文本视图的不一致行为。水平滚动条最初没有放在右侧,因此TextView最初被消隐了!如果我尝试滚动空白textView,文本会显示出来。添加额外文本时,滚动条不会滚动显示新文本,但如果我手动滚动文本,则会显示。
我搜索了stackoverflow,并尝试添加以下属性但没有成功。
android:focusable="true"
android:focusableInTouchMode="true"
答案 0 :(得分:1)
在我想要使用android:gravity="right"
滚动TextView动画的情况下,这些解决方案都不起作用。有帮助的简单解决方法是将TextView重力保持在左侧,但将其对齐在RelativeLayout容器内:
<RelativeLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<AutoScrollingTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:gravity="left"
android:singleLine="true"
android:ellipsize="none">
</RelativeLayout>
答案 1 :(得分:0)
试试这个例子,它应该有效:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/myText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/myscroll"
android:ellipsize="marquee"
android:singleLine="true"
android:scrollHorizontally="true"
android:marqueeRepeatLimit="10"
>
</LinearLayout>
注意:在测试选框时,不要在Eclipse内的设计视图中测试它,在模拟器\设备上试试..
此外,如果您想在代码中添加滚动效果:
TextView tView = (TextView) findViewById(R.id.myText);
tView.stSelected(true);
要在选框结尾处使选框滚动不停止:
android:marqueeRepeatLimit=”marquee_forever”
答案 2 :(得分:0)
发现重力左/右被弃用,开发人员应该使用开始/结束。对于要滚动的文本,需要将“wrap_content”设置为其宽度,另外textDirection需要设置为RTL。由于未知原因,textDirection不能以编程方式工作,但在xml中工作。
此代码适用于所有Android版本的API。
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="end"
android:textDirection="rtl"
android:scrollHorizontally="true"
android:scrollbars="horizontal"
android:singleLine="true"
android:ellipsize="none"
android:text="@string/txt_start"
android:textAppearance="?android:attr/textAppearanceLarge" />