我有这个简单的资源可绘制:
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="?android:attr/listDivider"
android:insetLeft="88dp"
android:insetRight="16dp">
</inset>
这适用于带有5.1的Nexus 6,但在带有4.0.3的华为U9200E上我得到:
org.xmlpull.v1.XmlPullParserException: Binary XML file line #6: <inset> tag requires a 'drawable' attribute or child tag defining a drawable
我可以在其他属性中使用?android:attr/listDivider
,并且我可以将其他drawable设置为我的插图drawable的drawable,但是这种组合在某些设备中显然不起作用。
为什么???
答案 0 :(得分:0)
好吧,最后我不知道为什么它不起作用,但我可以设法让它以编程方式工作。这是如何:
Resources r = getResources();
TypedArray a = getTheme().obtainStyledAttributes(R.style.AppBaseTheme, new int[]{android.R.attr.listDivider});
int attributeResourceId = a.getResourceId(0, 0);
Drawable divider;
if (Build.VERSION.SDK_INT >= 21) {
divider = getDrawable(attributeResourceId);
} else {
divider = r.getDrawable(attributeResourceId);
}
a.recycle();
int lpx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, RIGHT_MARGIN, r.getDisplayMetrics());
int rpx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, LEFT_MARGIN, r.getDisplayMetrics());
InsetDrawable insetDivider = new InsetDrawable(divider, lpx, 0, rpx, 0);
mListView.setDivider(insetDivider);