要这样自定义控件的缘由:
需求:一个界面两个跑马灯(在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源创计划”,欢迎正在阅读的你也加入,一块儿分享。函数