Android控制元件TextView之跑馬燈功能問題記錄
阿新 • • 發佈:2018-12-19
轉載自: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中,修改控制元件型別為新自定義的
再次執行,可以出現跑馬燈效果出現了。