在java中为视图创建样式xml(Button)

时间:2014-08-13 10:23:41

标签: java android xml

这是我的视图(按钮)的xml样式

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" >
            <shape>
                <solid
                    android:color="#e92727" />
                <stroke
                    android:width="1dp"
                    android:color="#d30a0a" />
                <corners
                    android:radius="10dp" />
                <padding
                    android:left="10dp"
                    android:top="10dp"
                    android:right="10dp"
                    android:bottom="10dp" />
            </shape>
        </item>
        <item>
            <shape>
                <gradient
                    android:startColor="#e92727"
                    android:endColor="#d30a0a"
                    android:angle="270" />
                <stroke
                    android:width="1dp"
                    android:color="#d30a0a" />
                <corners
                    android:radius="10dp" />
                <padding
                    android:left="10dp"
                    android:top="10dp"
                    android:right="10dp"
                    android:bottom="10dp" />
            </shape>
        </item>
    </selector>

我想在java中创建这个样式而不使用drawable中的xml文件。 试图从createFromXML实现这一目标,但不会成功。

代码:

String xml_code = initalized with above xml code;
Drawable d = null;
XmlPullParserFactory pullParserFactory;
try {
      pullParserFactory = XmlPullParserFactory.newInstance();
      XmlPullParser parser = pullParserFactory.newPullParser(); 
      InputStream in_s = new ByteArrayInputStream(xml_code.getBytes("UTF-8"));
      parser.setInput(in_s, null);
      d = Drawable.createFromXml(getResources(), parser);
} catch (Exception e) {
      e.printStackTrace();
}
btn.setBackgroundDrawable(d);

请建议我如何实现这一目标,并且我无法将此xml保存在drawable中并进一步使用btn.setBackgroundDrawable(getResources().getDrawable(R.drawable.xml_style));

1 个答案:

答案 0 :(得分:1)

我不明白。为什么要使用Java而不是xml? XML更容易x)

我觉得你很困惑。

你可以这样做:

Drawable d = getResources().getDrawable(R.layout.your_xml_file);

这将从您的xml文件中返回一个drawable。

我希望它会有所帮助。