Android中如何自定义我们想要的控件(以可以自动获取焦点的TextView为例)
2017-03-29 12:34
609 查看
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加入了跑马灯效果。
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加入了跑马灯效果。
相关文章推荐
- 【Android】在控件、视图绘制或改变之后如何获取其部分状态和属性(比如高、宽、TextView绘制后的文字行数等)
- Android中TextView不获取焦点可以实现跑马灯的效果
- focusable ,focusableInTouchMode,控件焦点属性;Android 如何让EditText不自动获取焦点
- TextView/EditText字体阴影 ,自动换行,焦点获取,输入法回车键前往,自定义光标
- Android View如何获取焦点 EditText焦点转移
- Android:TextView不获取焦点可以实现跑马灯的效果
- Android控件EditText不自动获取焦点
- Android 如何使EditText不自动获取焦点
- 【Android】如何获取TextView的控件宽度以及字体宽度
- Android中TextView不获取焦点可以实现跑马灯的效果
- Android 如何让EditText不能自动获取焦点
- Android中TextView不获取焦点可以实现跑马灯的效果
- Android TextView的跑马灯(不获取焦点情况下也可以跑)
- 让android的控件EditText不自动获取焦点
- Android中TextView不获取焦点可以实现跑马灯的效果
- Android基础教程——在TextView中显示Html 自定义标签,获取标签属性
- Android取消EditText自动获取焦点默认行为
- Android 如何让EditText不自动获取焦点
- android自定义Spinner下拉菜单和AutoCompleteTextView自动显示的(下拉列表框)样式
- Android 如何让EditText不自动获取焦点