筆者在學習android的過程當中曾遇到過一個比較頭疼的問題——如何讓文本實現走馬燈的效果,在起初我和你們同樣想在網上找到一點資料,但是當我在茫茫網際中搜尋了幾個小時以後發現的結果倒是很是惱火的,提問的一大堆卻沒有回答的,因而我開始本身的專研道路,筆者是一個android的菜鳥級人物,並且是很是菜的那種。在對android自帶的例子的學習中我漸漸明白瞭如何實現走馬燈效果了。如下是我本身的一段代碼,若有不正確之處請多多指正。android
package irdc.ScrollingText;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class ScrollingText extends Activity
{
public TextView t1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
t1= (TextView) findViewById(R.id.t1);
t1.setText("哈哈個人跑馬燈程序接下來是歌詞呵呵:沉魚落雁,閉月羞花,美的無處藏,人在身旁,如沐春光");
t1.setTextSize(30);
t1.setHorizontallyScrolling(true);
t1.setFocusable(true);
}
}
在這段程序中我設置了t1的焦點爲真(意思爲焦點在t1上),同事我設置了t1的文本顯示能超過其顯示區域(
t1.setHorizontallyScrolling(true
) 設置的這行的目的是爲了避免讓程序自動給文本折行,使之爲單行),固然這些屬性你均可以在XML文件中定義。接下來咱們看看main.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget35"
android:layout_;fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/black"
xmlns:android="
http://schemas.android.com/apk/res/android"
>
<TextView
android:id="@+id/t1"
android:layout_width
="100px"//此處爲文本顯示區域的寬度此值必須比你的文本寬度要小不然是沒有效果的
android:layout_height="wrap_content"
android:text="@string/str_id"
android:textColor="@drawable/green"
android:layout_x="61px"
android:layout_y="69px"
android:scrollX="2px"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
>
</TextView>
<ViewStub android:layout_y="221dip" android:layout_;wrap_content" android:layout_x="103dip" android:id="@+id/ViewStub01" android:layout_height="wrap_content"></ViewStub>
</AbsoluteLayout>
你們注意到在TextView中我添加了三行藍色的字段,其中singleLine表示TextView中文本爲單行文本若是你在你的程序中設置了
setHorizontallyScrolling(true)在這你能夠不寫了,接下來就是咱們的關鍵之處了
ellipsize="marquee" 此語句表示咱們將TextView設置爲了一個走馬燈,marqueeRepeatLimit="marquee_forever" 表示走馬燈的滾動效果重複的次數,你能夠填一個天然數。
好了接下了編譯試試