如何从本机视图获取属性

时间:2019-07-14 18:16:00

标签: java android layout attr

如何从“本地视图”中获取属性?

我展开了AppBarLayout,并在XML布局中使用了以下属性:

app:expanded="false"

我知道如何从自定义样式中获取属性,但是如何从标准属性中获取属性?

TypedArray ta = context.obtainStyledAttributes(attrs, ???? );
expanded = ta.getBoolean( ???? , false);

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,但是我不确定这是一个好方法。

我定义了一个样式,并重新定义了相同的名称:

<declare-styleable name="attrs_global_boolean">
    <attr name="expanded" format="boolean"/>
    ....
</declare-styleable>

<declare-styleable name="AppBarLayout"> // here i use the same name of the original class, doesn't seem to give me any error, maybe it is better do use AppBarLayoutCustom or AppBarLayoutExtra (or any other name ?? )
    <attr name="expanded"/>
</declare-styleable>

然后

final static protected int[] STYLEABLE_AppBarLayout = R.styleable.AppBarLayout;
TypedArray ta = context.obtainStyledAttributes(attrs, STYLEABLE_AppBarLayout );
expanded = ta.getBoolean( R.styleable.AppBarLayout_expanded, false);
ta.recycle();

有没有一种方法可以重新定义具有相同属性名称的样式?更好的方法呢?

谢谢