自定义控件属性 android,Android 自定义控件属性赋值

1. 自定义属性

attrs.xml文件,在AttrAssignTextView中定义了5个属性,并且定义了一个单独的attrAssignStyle,用于后面的定义。

2. 属性赋值

布局文件中直接定义

自定义style,在布局文件中指定View的style

style.xml文件

自定义主题theme

3. 自定义控件

自定义控件AttrAssignTextView

public class AttrAssignTextView extends TextView {

public AttrAssignTextView(Context context) {

this(context, null);

}

public AttrAssignTextView(Context context, @Nullable AttributeSet attrs) {

this(context, attrs, 0);

}

public AttrAssignTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AttrAssignTextView);

String attr1 = a.getString(R.styleable.AttrAssignTextView_attr1);

String attr2 = a.getString(R.styleable.AttrAssignTextView_attr2);

String attr3 = a.getString(R.styleable.AttrAssignTextView_attr3);

String attr4 = a.getString(R.styleable.AttrAssignTextView_attr4);

String attr5 = a.getString(R.styleable.AttrAssignTextView_attr5);

a.recycle();

setText((attr1 != null ? attr1 + "\n" : "")

+ (attr2 != null ? attr2 + "\n" : "")

+ (attr3 != null ? attr3 + "\n" : "")

+ (attr4 != null ? attr4 + "\n" : "")

+ (attr5 != null ? attr5 + "\n" : ""));

}

}

效果如下,布局文件定义 > style定义 > theme定义

5f2d41b8f3988330b76c88572fe873f7.png

4. defStyleAttr和defStyleRes

使用obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)方法,通过defStyleAttr和defStyleRes来获取默认值。

defStyleAttr设置默认值,defStyleAttr是当前Theme中的一个attribute,是指向style的一个引用。重新定义主题attrAssignTheme,添加attrAssignStyle属性,attrAssignStyle必须在attr中定义过。

只指定defStyleAttr值 TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AttrAssignTextView,

R.attr.attrAssignStyle, 0);

效果如下,布局文件定义 > style定义 > defStyleAttr定义 > theme定义

ca414b8aa1ca244ac260298ede155328.png

只指定defStyleRes值 TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AttrAssignTextView,

0, R.style.attrAssignDefStyleRes);

效果如下,布局文件定义 > style定义 > defStyleRes定义 > theme定义

43e5274466240f72ba48ff5e3681d1e3.png

同时指定defStyleAttr和defStyleRes值 TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AttrAssignTextView,

R.attr.attrAssignStyle, R.style.attrAssignDefStyleRes);

效果如下,布局文件定义 > style定义 > defStyleRes定义 > theme定义

虽然attrAssignDefaultStyle中定义了attr5,但其它地方没有定义,attr5为空。

b63257012cea84ecfe69d1ecfe1fb5ae.png

参考资料:http://blog.csdn.net/zq2114522/article/details/53312530

相关文章

Android 自定义控件属性

Android 自定义控件属性format详解

Android 自定义控件属性赋值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值