自定義控件編寫流程
創建一個默認就能獲取焦點的TextView
1.創建一個類繼承至TextView,FocusTextView
2.重寫其構造方法
//使用在通過java代碼創建控件 public FocusTextView(Context context) { super(context); } //由系統調用(帶屬性+上下文環境構造方法) public FocusTextView(Context context, AttributeSet attrs) { super(context, attrs); } //由系統調用(帶屬性+上下文環境構造方法+布局文件中定義樣式文件構造方法) public FocusTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); }
3.將原有TextView上的isFocus方法默認修改為,能夠獲取焦點
//重寫獲取焦點的方法,由系統調用,調用的時候默認就能獲取焦點 @Override public boolean isFocused() { return true; }
4.使用過程
獲取當前類的全路徑名稱,作為xml中的標簽存在,其余屬性的使用方式和TextView一致
public class FocusTextView extends TextView { //使用在通過java代碼創建控件 public FocusTextView(Context context) { super(context); } //由系統調用(帶屬性+上下文環境構造方法) public FocusTextView(Context context, AttributeSet attrs) { super(context, attrs); } //由系統調用(帶屬性+上下文環境構造方法+布局文件中定義樣式文件構造方法) public FocusTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } //重寫獲取焦點的方法,由系統調用,調用的時候默認就能獲取焦點 @Override public boolean isFocused() { return true; } }
<!-- android:ellipsize="end"添加省略點的所在位置 --> <!-- 想讓文字出現跑馬燈效果,必須讓其獲取焦點 --> <!-- android:marqueeRepeatLimit="marquee_forever"一直滾動屬性 --> <!-- 自定義控件達到滾動效果(其實就是重新原有的TextView,讓其一直能夠獲取焦點即可) --> <!-- <TextView android:text="秋天秋天悄悄過去,留下小秘密,啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊" android:textColor="#000" android:singleLine="true" android:padding="5dp" android:ellipsize="marquee" android:focusable="true" android:marqueeRepeatLimit="marquee_forever" android:focusableInTouchMode="true" android:layout_width="match_parent" android:layout_height="wrap_content"/> --> <com.itheima.mobilesafe74.view.FocusTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:padding="5dp" android:singleLine="true" android:text="秋天秋天悄悄過去,留下小秘密,啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊" android:textColor="#000" > </com.itheima.mobilesafe74.view.FocusTextView>