如何从作为字符串提供的XML源代码创建Drawable(或XmlResourceParser对象)?

问题描述 投票:0回答:3

如何从作为字符串提供的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>
java android xml drawable xmlresourceparser
3个回答
0
投票

FYI

createFromXml()

使用可选的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");
        }

    }


}

0
投票

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

public Drawable xmlStringToDrawable(String yourString){
     XmlPullParser parser = Xml.newPullParser();
     parser.setInput(new StringReader(yourString));
     return Drawable.createFromXml(getResources(),parser)
}

0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.