Marquee在android中

时间:2010-08-19 12:15:01

标签: android layout

在我的Android应用程序中,我需要连续滚动字幕文本。 在我的Xml中我有这个代码:

<TextView
   android:id="@+id/widget28"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentRight="true"                
   android:singleLine="true"        
   android:ellipsize="marquee"
   android:fadingEdge="horizontal"
   android:marqueeRepeatLimit="marquee_forever"
   android:scrollHorizontally="true"
   android:textColor="#ff4500"
   android:text="Simple application that shows how to use RelativeLayout " />

在我的Java源代码中,我有:

TextView tv = (TextView )findViewById(R.id.widget28);
tv.setSelected(true);

现在我的问题是这个代码工作正常,并且即使焦点不在控件上但是文本的滚动不完整,也可以正常运行。我需要文本完全滚动。如果我在文本之前添加空间并且在文本之后它工作正常,但这不是很好的编程。这有什么好方法吗?

4 个答案:

答案 0 :(得分:2)

如果要连续滚动,必须在xml中使用它:

    android:ellipsize="marquee"
    android:fadingEdge="horizontal"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:selectAllOnFocus="true"
    android:singleLine="true"

没有必要把setSelected(true);在文件中

PS。您只需在焦点更改时单击它。

答案 1 :(得分:0)

我不明白你的问题。

我已经复制了您的代码并将TextView插入到RelativeLayout fill_parent的2轴中,它运行正常(不是您想要的吗?):

alt text

我在默认模拟器2.1和2.2上测试了该代码。没问题。

这是我的班级:

public class TextViewMarquee extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.textview);
        findViewById(R.id.widget28).setSelected(true);
    }
}

关联的xml:

 <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/widget28"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:ellipsize="marquee"
        android:fadingEdge="horizontal"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:singleLine="true"
        android:text="Simple application that shows how to use RelativeLayout"
        android:textColor="#ff4500" />
</RelativeLayout>

这实际上是全部,在清单或风格中没有神秘的线条或......

答案 2 :(得分:0)

试试这个::

<TextView
 android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentRight="true"                
   android:singleLine="true"        
   android:ellipsize="marquee"
   android:fadingEdge="horizontal"
   android:marqueeRepeatLimit="marquee_forever"
   android:scrollHorizontally="true"
   android:textColor="#ff4500"
   android:text="Simple application that shows how to use RelativeLayout " 
   android:focusable="true"
   android:focusableInTouchMode="true" android:freezesText="true"></TextView>

答案 3 :(得分:0)

伙计们,TextView只在它聚焦时滚动它的文本。一旦失去焦点,文本滚动就会停止。