如何从我的自定义组件访问android'提示'样式?

时间:2015-04-26 11:07:23

标签: android

我已经创建了自己的自定义组件,并希望像这样使用android'提示'样式:

   <com.sheep.EmailListContainer
        android:id="@+id/my_component"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Hint To Use"/>

所以我的问题是,如何从我的组件的构造函数中的属性集中获取'提示'样式(将其用于我的组件)?

  • 我看过它在TextView中是怎么回事,我发现它正在尝试访问我无法访问的android.internal.R.styleable

提前致谢 利奥尔

1 个答案:

答案 0 :(得分:2)

您可以添加此方法:

public static final String DEFAULT_NAMESPACE = "http://schemas.android.com/apk/res/android";

private String getDefaultNamespaceAttributeValue(AttributeSet attrs, String attribute) {
    String value = null;

    int resId = attrs.getAttributeResourceValue(DEFAULT_NAMESPACE, attribute, 0);
    if (resId != 0) {
        value = getContext().getResources().getString(resId);
    } else {
        value = attrs.getAttributeValue(DEFAULT_NAMESPACE, attribute);
    }

    return value;
}

然后像这样使用:

public EmailListContainer(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);

    String value = getDefaultNamespaceAttributeValue(attrs, "hint");
}