android-我的自定义视图的默认属性值(从LinearLayout继承)

android-我的自定义视图的默认属性值(从LinearLayout继承),第1张

概述我有一个自定义布局publicclassPersonViewextendsLinearLayout{publicPersonView(Contextcontext,AttributeSetattrs){super(context,attrs);initUi(context);}publicPersonView(Contextcontext){super(context);initUi(context);}

我有一个自定义布局

public class PersonVIEw extends linearLayout{public PersonVIEw(Context context, AttributeSet attrs) {    super(context, attrs);    initUi(context);}public PersonVIEw(Context context) {    super(context);    initUi(context);}    private voID initUi(Context context){    LayoutInflater.from(context).inflate(R.layout.person_vIEw, this, true);    profilePicture = (ImageVIEw)findVIEwByID(R.ID.profile_picture);    ...}

布局在xml中定义

<merge xmlns:androID="http://schemas.androID.com/apk/res/androID">   ...

然后我在其他布局中使用它

情况1

// In this case androID:layout_margin is specifIEd so it should be used<my.package.PersonVIEw androID:layout_margin="10dp" .../>

情况二

// In this case androID:layout_margin is NOT specifIEd so I want for my PersonVIEw some default value should be used (say 5pt)<my.package.PersonVIEw .../>

我的自定义布局PersonVIEw如何实现案例2?

解决方法:

类似问题已在https://stackoverflow.com/a/25982512/3554436解决

将androID:layout_margin添加到attrs.xml

<declare-styleable name="PersonVIEw">    ...    <attr name="androID:layout_margin" />    ...</declare-styleable>

像其他自定义属性一样访问属性:

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PersonVIEw);float margin = a.getDimension(R.styleable.PersonVIEw_androID_layout_margin, 0);...boolean hasmargin = a.hasValue(R.styleable.PersonVIEw_androID_layout_margin);
总结

以上是内存溢出为你收集整理的android-我的自定义视图默认属性值(从LinearLayout继承)全部内容,希望文章能够帮你解决android-我的自定义视图的默认属性值(从LinearLayout继承)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082868.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存