Android中如何自定义我们想要的控件(以可以自动获取焦点的TextView为例)

1.首先需要在Android应用工程下新建一个包,存放自己的自定义控件,以com.example.customsizeview为例,在该包下新建FocusTextView这个类,并继承TextView;

2.重写原有TextView下的构造方法:

        //根据上下文环境的构造方法
	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);
		// TODO Auto-generated constructor stub
	}
3.重写TextView下的方法:

        @Override
	@ExportedProperty(category = "focus")
	//返回可以获取焦点
	public boolean isFocused() {
		// TODO Auto-generated method stub
		return true;
	}
	
	@Override
	@ExportedProperty
	//返回可以被点击
	public boolean isClickable() {
		// TODO Auto-generated method stub
		return true;
	}
	
	@Override
	@ExportedProperty
	//返回可以被触摸
	public boolean isInTouchMode() {
		// TODO Auto-generated method stub
		return true;
	}
这样就使得我们自定义的控件可以自动获取焦点了。

4.在布局文件中引用我们的自定义控件:

         <com.example.customsizeview.FocusTextView
         android:id="@+id/FTV_test"
         style="@style/MyTitleStyle"
         android:text="从前从前,有个人爱你很久,但偏偏,雨渐渐,大到我看你不见,还要多久,我才能在你身边,等到放晴的那天也许我会比较好一点"
         android:singleLine="true"
         android:ellipsize="marquee"
         android:marqueeRepeatLimit="marquee_forever"
         />
在xml文件中使用自定义控件时必须引用该自定义控件的全类名,可以通过 右击 FocusTextView----->Copy Qualified Name获得,在本例中,定义了样式属性,并为该FocusTextView加入了跑马灯效果。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值