Как я могу создать Drawable (или объект XmlResourceParser) из исходного кода XML, представленного в виде строки? - PullRequest
0 голосов
/ 30 августа 2018

Как я могу создать 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 ]

0 голосов
/ 30 августа 2018

Я просто думаю об этом, может быть, не совсем синтаксически правильно, но я верю, что это то, что вы хотите.

public Drawable xmlStringToDrawable(String yourString){
     XmlPullParser parser = Xml.newPullParser();
     parser.setInput(new StringReader(yourString));
     return Drawable.createFromXml(getResources(),parser)
}
0 голосов
/ 30 августа 2018

Это не ответ на вопрос. Но это решило мою проблему. Спасибо всем за помощь:

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

Я генерирую только index во время выполнения в этом подходе.

0 голосов
/ 30 августа 2018

FYI

createFromXml()

Создание отрисовки из XML-документа с использованием необязательного Resources.Theme.

Попробуйте это

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

    }


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...