嗨,我只是偶然发现了一些奇怪的事情。
我正在创建一个自定义视图,它具有高程和状态列表动画标签,只能与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版本都能正常运行......
这是预期的行为,还是只是一个错误?或者我是否需要提供额外的逻辑以防止这种行为。