似乎有很多“类似”的问题和答案分散在其中,所有问题都涉及如何从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
。
当然这不是一件罕见的尝试吗?
答案 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);
}