微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在自定义视图中获取android默认属性

我创建了一个包含RelativeLayout和EditText的简单自定义视图:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/edt_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</RelativeLayout>

我还在res / values / attrs.xml中添加了一些自定义属性,并在自定义视图构造函数中检索这些属性,一切正常.

现在,我想在自定义视图中检索EditText属性,例如我想在我的自定义视图中获取android:text属性.

我的自定义视图类(简化):

public class CustomEditText extends RelativeLayout {
    private int panCount;

    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs,
            R.styleable.CustomEditText, 0, 0);
        try {
            this.panCount = typedArray.getInt(R.styleable.CustomEditText_panCount, 16);
        } finally {
            typedArray.recycle();
        }
    }
}

如果不在res / values / attrs.xml中重新声明文本属性,我该怎么做?

解决方法:

您可以将android:text添加到声明的syleable中.但一定不要重新声明它.

<declare-styleable name="CustomEditText">
    <attr name="android:text" />
</declare-styleable>

然后从样式中获取此值,就像使用R.styleable.CustomEditText_android_text索引的任何其他属性一样.

CharSequence text = typedArray.getText(R.styleable.CustomEditText_android_text);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐