Как извлечь ссылочную ссылку на атрибуты
Я определил тему и стиль внутри своего приложения. Значки (drawable) определяются с использованием ссылки в файле стиля как
<attr name="myicon" format="reference" />
и стиль как
<style name="CustomTheme" parent="android:Theme.Holo">
<item name="myicon">@drawable/ajout_produit_light</item>
Мне нужно извлечь программно, чтобы использовать хорошее изображение в диалоговом фрагменте.
Если я сделаю как
mydialog.setIcon(R.style.myicon);
Я получаю id равным 0, поэтому изображение
Я попытался использовать что-то вроде
int[] attrs = new int[] { R.drawable.myicon};
TypedArray ta = getActivity().getApplication().getTheme().obtainStyledAttributes(attrs);
Drawable mydrawable = ta.getDrawable(0);
mTxtTitre.setCompoundDrawables(mydrawable, null, null, null);
Я пробовал разные вещи, но результат всегда равен 0 или null: -/
Как я могу это сделать?
Ответы
Ответ 1
Я нашел решение на
Доступ к ресурсу, определенному в теме и attrs.xml андроид
TypedArray a = getTheme().obtainStyledAttributes(R.style.AppTheme, new int[] {R.attr.homeIcon});
int attributeResourceId = a.getResourceId(0, 0);
Drawable drawable = getResources().getDrawable(attributeResourceId);
Ответ 2
Решение Kotlin:
val typedValue = TypedValue()
context.theme.resolveAttribute(R.attr.yourAttr, typedValue, true)
val imageResId = typedValue.resourceId
val drawable = ContextCompat.getDrawable(contex, imageResId) ?: throw IllegalArgumentException("Cannot load drawable $imageResId")
Ответ 3
Казалось бы, вы пытаетесь установить значок своего myDialog с помощью ресурса и пытаетесь получить к нему доступ через R.style, но ваш другой сегмент кода заставляет меня думать, что у вас есть ресурс, расположенный в R.drawable
С учетом этого вы должны иметь возможность получить нужный эффект с помощью myDialog.setIcon(R.drawable.myicon);