兩種方法實現TextView跑馬燈效果(字體橫向滾動)

最近在做關於安卓開發的複習學習,畢竟熟能生巧,話不多說,直接第一種方法上:(這種適用於一個TextView滾動)

在TextView的標籤中加上如下代碼:(紅色部分爲必須設置選項)

android:singleLine="true"   
android:ellipsize="marquee"   
android:focusable="true"   
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever" 

其中singline表示單行顯示,否則自動換行了怎麼滾動,只有顯示不下纔可以橫向滾動啊
ellipsize屬性,作用是當文字過長時,該控件該如何顯示:  

android:ellipsize=”start” 表示:省略號顯示在開頭  
android:ellipsize=”end”表示:省略號顯示在結尾  
android:ellipsize=”middle”表示:省略號顯示在中間  

android:ellipsize=”marquee”表示:以跑馬燈的方式顯示(也就是橫向滾動) 

android:marqueeRepeatLimit="marquee_forever"//表示滾動回數,這裏設置的是永久,表示一直滾動 也可以設置數字爲1,2,3表示幾次。

android:focusable="true"  要顯示該跑馬燈,view必須要獲得焦點,只有在取得焦點的情況下跑馬燈纔會顯示。

當然在Activity中你還需要設置的一個就是textview.setSelected(true);

到這裏我們實現了第一種一排textview 的滾動,那麼要是一個界面有兩個或者多個TextView怎麼辦呢?你會發現焦點沒法設置,這個時候只能用代碼的方法來設置了。

1,新建一個java文件,我這個叫做MyTextView,繼承TextView,重寫TextView的三個方法,並且一定要寫isFocused這個方法,並返回true

public class MyTextView extends TextView {
    public MyTextView(Context context) {
        super(context);
    }
    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    //返回textview是否處在選中的狀態
    //而只有選中的textview才能夠實現跑馬燈效果
    @Override
    public boolean isFocused() {
        return true;
    }
}

2.在佈局中把要使用跑馬燈效果的Textview換成MyTextView即可。

快點擊運行試試效果吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章