为了账号安全,请及时绑定邮箱和手机立即绑定

如何从以字符串形式提供的 XML 源代码创建 Drawable

如何从以字符串形式提供的 XML 源代码创建 Drawable

慕村225694 2021-08-19 22:29:47
如何Drawable从以字符串形式提供的XML 源代码创建?我找到了以下方法: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>
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

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


public Drawable xmlStringToDrawable(String yourString){

     XmlPullParser parser = Xml.newPullParser();

     parser.setInput(new StringReader(yourString));

     return Drawable.createFromXml(getResources(),parser)

}


查看完整回答
反对 回复 2021-08-19
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

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


        Drawable icon = resources.getDrawable(resources.obtainTypedArray(R.array.arrayName).getResourceId(index, 0), context.getTheme());

        BitmapDrawable bitmapDrawable = (BitmapDrawable) icon;

        bitmapDrawable.setGravity(Gravity.RIGHT);

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


查看完整回答
反对 回复 2021-08-19
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

供参考


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

        }


    }



}


查看完整回答
反对 回复 2021-08-19
  • 3 回答
  • 0 关注
  • 214 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信