如何在自定义视图中获取“android:”标记值

时间:2011-10-24 14:27:52

标签: android android-layout android-custom-view

似乎有很多“类似”的问题和答案分散在其中,所有问题都涉及如何从AttributeSet获取自定义属性。到目前为止我无法找到的是如何获得android:命名空间标记:

    <com.custom.view.StatusThumbnail
        android:id="@+id/statusThumbnailContainer"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:layout_weight="1"/>

我想从此自定义组件中撤回layout_height属性。不幸的是,根据我所读到的,我最接近的是如何做到这一点:

public StatusThumbnail(Context context, AttributeSet attrs) {
    super(context, attrs);

    String height = attrs.getAttributeValue("android", "layout_height");

但这会返回null

当然这不是一件罕见的尝试吗?

2 个答案:

答案 0 :(得分:60)

命名空间应该是“http://schemas.android.com/apk/res/android”android是在xml文件中声明的别名

答案 1 :(得分:-2)

首先在:

中声明所需的属性

RES \ attrs.xml

    <declare-styleable name="StatusThumbnail">
        <attr name="statusThumbnailattr" format="string"/>
    </declare-styleable>

然后在XML布局声明中使用相同的属性

<com.custom.view.StatusThumbnail
        android:id="@+id/statusThumbnailContainer"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        statusThumbnailattr="some value"
        android:layout_weight="1"/>

使用

进行访问
public StatusThumbnail(Context context, AttributeSet attrs) {
    super(context, attrs);
TypedArray a=context.obtainStyledAttributes(attrs,R.styleable.StatusThumbnail);
this.mdColorDialogTitle=a.getString(R.styleable.StatusThumbnail_statusThumbnailattr);
}