Указание идентификатора нарисованного ресурса в отдельном XML - PullRequest
1 голос
/ 23 октября 2011

У меня есть XML-файл, в котором указан набор имен кнопок изображений.Кроме того, я хотел бы указать идентификатор ресурса изображения в качестве атрибута узла XML, как показано ниже:

<button name="close" resLocation="R.drawable.close" />

Я анализирую XML в коде, я хотел бы установить фон изображения длядинамически создаваемая кнопка с использованием атрибута resLocation.Поскольку resLocation - это строка, я не могу напрямую преобразовать ее в объект Drawable.Есть ли способ, которым я могу обойти?

Ответы [ 2 ]

1 голос
/ 23 октября 2011

Вы можете использовать get getResources().getIdentifier:

String myResourceId = "close"; // Parsed from XML in your case
getResources().getIdentifier(myResourceId, "drawable", "com.my.package.name");

Это потребует, чтобы ваш XML немного отличался:

<button name="close" resLocation="close" />

Если вам нужно сохранить формат R.type.id в вашем XML, вам просто нужно разобрать тип и идентификатор:

String myResourceId = "R.drawable.close";
String[] resourceParts = myResourceId.split("\\.");
getResources().getIdentifier(resourceParts[2], resourceParts[1], "com.my.package.name");
0 голосов
/ 23 октября 2011

Вы можете попробовать

<button name="close" resLocation="@drawable/close" />

или попробовать

ImageButton imgButton=new ImageButton(this);

imgButton.setImageResource(getResources().getDrawable(R.drawable.close));
...