在5.0之前的设备上找不到自定义视图属性

时间:2014-12-10 22:46:58

标签: android android-5.0-lollipop

嗨,我只是偶然发现了一些奇怪的事情。

我正在创建一个自定义视图,它具有高程和状态列表动画标签,只能与5.0 Android设备一起使用。该视图也使用自己的自定义属性。 XML看起来像

<CustomView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_centerInParent="true"
    android:background="@drawable/
    android:elevation="@dimen/fab_elevation"
    android:stateListAnimator="@animator/fab_anim"
    fab:fabCenterDrawable="@drawable/fab_icons" />

如果我使用5.0设备运行应用程序,一切都按预期进行;但如果我用&lt; 5.0设备最后一个自定义属性未被读取! 因此,试图弄清楚发生了什么,我打印了属性集中的所有属性。 5.0设备的结果如下:

background : @2130837555 of type String
layout_width : @2131230769 of type String
layout_height : @2131230769 of type String
layout_centerInParent : true of type String
elevation : @2131230766 of type String
stateListAnimator : @2131034112 of type String
fabCenterDrawable : @2130837558 of type String

对于5.0之前的设备并获得以下内容:

background : @2130837555 of type String
layout_width : @2131230769 of type String
layout_height : @2131230769 of type String
layout_centerInParent : true of type String
stateListAnimator : @2131034112 of type String

可以看出,未读取高程值,因为该标记仅适用于5.0 SDK,但奇怪的部分是缺少自定义属性!

在花了一些时间试图解决问题之后,我只是继续进行一个简单的测试,我将棒棒糖只将标签推送到XML的末尾,所以XML现在看起来像这样:

<CustiomView
    android:layout_width="@dimen/fab_size"
    android:layout_height="@dimen/fab_size"
    android:layout_centerInParent="true"
    android:background="@drawable/fab_background"
    fab:fabCenterDrawable="@drawable/fab_icons"
    android:elevation="@dimen/fab_elevation"
    android:stateListAnimator="@animator/fab_anim" />

现在所有Android版本都能正常运行......

这是预期的行为,还是只是一个错误?或者我是否需要提供额外的逻辑以防止这种行为。

0 个答案:

没有答案