如何从作为字符串提供的XML源代码创建Drawable
?
我找到了以下方法:
Drawable drawable = Drawable.createFromXml();
但它需要提供XmlResourceParser
- 我仍然没有看到从XML源代码创建它的方法。
XML源代码示例:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:src="@drawable/icon"
android:gravity="right"
/>
</item>
</layer-list>
FYI
使用可选的Resources.Theme从XML文档创建drawable。
试试这个
public class RecyclerViewActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler_view);
Drawable testDrawable;
Resources res = getResources();
try {
testDrawable = Drawable.createFromXml(res, res.getXml(R.xml.test));
} catch (Exception ex) {
Log.e("Error", "Exception creating drawable from XML");
}
}
}
我只是想到这一点,也许不完全在语法上正确,但我相信这是你想要的。
public Drawable xmlStringToDrawable(String yourString){
XmlPullParser parser = Xml.newPullParser();
parser.setInput(new StringReader(yourString));
return Drawable.createFromXml(getResources(),parser)
}
这不是问题的答案。但它解决了我的问题。谢谢大家的帮助:
Drawable icon = resources.getDrawable(resources.obtainTypedArray(R.array.arrayName).getResourceId(index, 0), context.getTheme());
BitmapDrawable bitmapDrawable = (BitmapDrawable) icon;
bitmapDrawable.setGravity(Gravity.RIGHT);
我在这种方法中只在运行时生成index
。