anonim
anonim

Reputation: 2544

android defined attributes and custom attributes side by side on a custom view

I have created a custom view as well as corresponding custom attributes. For example

<declare-styleable name="stripbar">
    <attr name="flowDirection" format="string"/>
</declare-styleable>

and

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

TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.stripbar);
CharSequence flowDirection = ta.getString(R.styleable.stripbar_flowDirection);

String text = attrs.getAttributeValue("android", "text"); 
}

and

<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:ns="http://schemas.android.com/apk/res/com.ns">

            <com.ns.Stripbar
                    android:id="@+id/aaa"
                    ns:flowDirection="RightToLeft"
                    android:text=”yoo hoo”/>

I receive null value for attribute text. I’m also aware of this and do not know how to resolve the issue.

To clarify, I need to obtain my custom attribute value as well as android predefined attribute value side by side?

Any help?

Upvotes: 1

Views: 325

Answers (1)

Jon Shemitz
Jon Shemitz

Reputation: 1265

The problem is that your R.styleable.stripbar is actually an array of integers that contains just your flowDirection attribute.

To fix that, you should be able to replace your context.obtainStyledAttributes(attrs, R.styleable.stripbar); with context.obtainStyledAttributes(attrs, new int[]{R.attr.flowDirection, android.R.attr.text});

Then, you should be able to replace ta.getString( R.styleable.stripbar_flowDirection ) with ta.getString(0) and get the text with ta.getString(1).

Upvotes: 3

Related Questions