要這樣自定義控件的緣由:
需求:一個界面兩個跑馬燈(在xml中實現)
Textview在xml文件中實現跑馬燈,若是有兩個跑馬燈,則會出現搶焦點的現象,只會跑一個
解決方法:
自定義一個Textview,設置其自動得到焦點: isFocused();android
實現具體以下:解釋在註釋裏面web
Java文件中代碼:ide
public class MyTextView extends TextView { //在用代碼建立的時候調用 public MyTextView(Context context) { this(context, null); } //在識別XML的時候會調用此方法建立Textview,底層會用反射去AttribestSet去取屬性值 public MyTextView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } //給第一個構造函數和第二個使用 public MyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //解決一個問題,須要Textview天生獲取焦點 @Override public boolean isFocused() { return true; } }
在xml文件中使用該控件:svg
<yf.changsha.com.view.MyTextView android:layout_width="match_parent" android:layout_height="40dp" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" android:text="wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww" /> <yf.changsha.com.view.MyTextView android:layout_width="match_parent" android:layout_height="40dp" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" android:text="wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww" />
本文同步分享在 博客「計蒙不吃魚」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。函數