一個最最最簡單的自定義控件(Textview)

要這樣自定義控件的緣由:
需求:一個界面兩個跑馬燈(在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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。函數

相關文章
相關標籤/搜索