我创建了一个自定义视图以及相应的自定义属性。例如
<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预定义属性值?
任何帮助?
答案 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)
获取文字。