1

如何从作为字符串提供的DrawableXML 源代码创建?

我找到了以下方法:

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>
4

3 回答 3

0

我只是想到了这一点,也许在语法上并不完全正确,但我相信这是您想要的。

public Drawable xmlStringToDrawable(String yourString){
     XmlPullParser parser = Xml.newPullParser();
     parser.setInput(new StringReader(yourString));
     return Drawable.createFromXml(getResources(),parser)
}
于 2018-08-30T07:50:07.987 回答
0

这不是问题的答案。但它解决了我的问题。感谢大家的帮助:

        Drawable icon = resources.getDrawable(resources.obtainTypedArray(R.array.arrayName).getResourceId(index, 0), context.getTheme());
        BitmapDrawable bitmapDrawable = (BitmapDrawable) icon;
        bitmapDrawable.setGravity(Gravity.RIGHT);

在这种方法中,我只index在运行时生成。

于 2018-08-30T08:24:21.383 回答
0

供参考

createFromXml()

使用可选的 Resources.Theme从XML 文档创建可绘制对象。

尝试这个

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

    }


}
于 2018-08-30T06:17:52.987 回答