1. 程式人生 > >Android控制元件TextView之跑馬燈功能問題記錄

Android控制元件TextView之跑馬燈功能問題記錄

轉載自:https://www.cnblogs.com/jesn/p/4298249.html

在使用TextView練習跑馬燈時出現了以下問題:

為控制元件設定了以下屬性

   <!--啟用焦點-->
    android:focusable="true"
    <!--單行顯示-->
    android:singleLine="true"
    <!--這裡設定為超出文字後滾動顯示-->
    android:ellipsize="marquee"
    <!--這個是設定滾動幾次,這裡是無限迴圈-->
    android:marqueeRepeatLimit="marquee_forever"
    <!--TouchMode模式的焦點啟用-->
    android:focusableInTouchMode="true"
    <!--橫向超出後是否有橫向滾動條-->
    android:scrollHorizontally="true"


但是執行起來跑馬燈的效果沒有出現,由於是android小白,所以上網查原來是TextView預設第一個獲取游標,其他的不預設獲取,而TextView在沒有獲取游標的前提下,跑馬燈的效果是不會出現的。
問題查到了,同時附錄的也有解決辦法,就嘗試著按照大神說的辦法做起來,發現確實解決了,所以記錄下來。

解決辦法:
1、建立一個class類
MarqueTextView繼承TextView

public class marqueeText extends TextView {

    public marqueeText(Context context) {
        super(context);
    }

    
public marqueeText(Context context, AttributeSet attrs) { super(context, attrs); } public marqueeText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //TextView預設設定是第一個獲取到的游標, //如果想讓所有的TextView都有跑馬燈效果,則讓所有的TextView都獲取到游標就行了
//這裡return true 就是讓所有的TextView都獲取到游標 @Override public boolean isFocused() { return true; } }

2、回到需要設定跑馬燈的TextView中,修改控制元件型別為新自定義的

 

再次執行,可以出現跑馬燈效果出現了。