代码之家  ›  专栏  ›  技术社区  ›  Dmitry

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

  •  0
  • Dmitry  · 技术社区  · 6 年前

    如何创建 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 回复  |  直到 6 年前
        1
  •  0
  •   AskNilesh    6 年前

    供参考

    createFromXml()

    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");
            }
    
        }
    
    
    }
    
        2
  •  0
  •   Kit Mak    6 年前

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

    public Drawable xmlStringToDrawable(String yourString){
         XmlPullParser parser = Xml.newPullParser();
         parser.setInput(new StringReader(yourString));
         return Drawable.createFromXml(getResources(),parser)
    }
    
        3
  •  0
  •   Dmitry    6 年前

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

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

    我只生成 index 在这个方法的运行时。