2015-06-26 32 views
1

我有這個簡單的資源繪製:機器人:ATTR/listDivider不是在插圖繪製公認繪製

<inset xmlns:android="http://schemas.android.com/apk/res/android" 
     android:drawable="?android:attr/listDivider" 
     android:insetLeft="88dp" 
     android:insetRight="16dp"> 
</inset> 

這適用於Nexus 6的5.1還好,但對華爲U9200E與4.0.3我得到:

org.xmlpull.v1.XmlPullParserException: Binary XML file line #6: <inset> tag requires a 'drawable' attribute or child tag defining a drawable 

我可以在其他屬性使用?android:attr/listDivider,我可以設置其他可繪製作爲繪製的插圖我繪製,但這個組合不工作,很顯然,在一些設備中。

爲什麼?

回答

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);