Reputation: 25864
There seems to be a lot of "similar" questions and answers to this scattered around which all refer to how to get a custom attribute from an AttributeSet
. What I haven't been able to find so far is how to get an android:
namespace tag:
<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"/>
I would like to pull back the layout_height
attribute from this custom component. Unfortunately from what I've read the closest I've got to how to do this is:
public StatusThumbnail(Context context, AttributeSet attrs) {
super(context, attrs);
String height = attrs.getAttributeValue("android", "layout_height");
But this returns null
.
Surely this isn't a rare thing to try and do?
Upvotes: 46
Views: 17357
Reputation: 11904
The namespace should be "http://schemas.android.com/apk/res/android
" android is an alias declared in your xml file
Upvotes: 66
Reputation: 27970
First declare required attributes in :
res\attrs.xml
<declare-styleable name="StatusThumbnail">
<attr name="statusThumbnailattr" format="string"/>
</declare-styleable>
then in your XML layout declaration use the same attribute
<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"/>
Access using
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);
}
Upvotes: -5