android在自定义视图上并排定义属性和自定义属性

时间:2012-06-10 21:13:31

标签: android android-custom-view

我创建了一个自定义视图以及相应的自定义属性。例如

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

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"); 
}

<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”/>

我收到属性文本的空值。我也知道this并且不知道如何解决这个问题。

为了澄清,我需要并排获取我的自定义属性值以及android预定义属性值?

任何帮助?

1 个答案:

答案 0 :(得分:3)

问题是,您的R.styleable.stripbar实际上是一个仅包含flowDirection属性的整数数组。

要解决此问题,您应该可以将context.obtainStyledAttributes(attrs, R.styleable.stripbar);替换为context.obtainStyledAttributes(attrs, new int[]{R.attr.flowDirection, android.R.attr.text});

然后,您应该可以将ta.getString( R.styleable.stripbar_flowDirection )替换为ta.getString(0),并使用ta.getString(1)获取文字。