Tengo un escenario en el que quiero establecer un Drawable
según el tema definido.Recurso de acceso definido en theme y attrs.xml android
Para explicar esto más, aquí es lo que tengo en el código:
\ res \ valores \ attrs.xml
<resources>
<declare-styleable name="AppTheme">
<attr name="homeIcon" format="reference" />
</declare-styleable>
</resources>
res \ valores \ styles.xml
<resources>
<style name="AppTheme" parent="android:style/Theme">
<item name="attr/homeIcon">@drawable/ic_home</item>
</style>
</resources>
AndroidManifest.xml
<application android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Como ya habrás notado, estoy definiendo un attr homeIcon personalizado y estableciendo el valor del atributo en AppTheme.
Cuando defino este atributo XML en un diseño y tratar de acceder a él es que funciona sin problemas
<ImageView android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="?attr/homeIcon" />
y hace que la ic_home Drawable
en un ImageView
.
Pero no puedo averiguar cómo acceder al Drawable
mediante programación.
he tratado de hacer esto con un trabajo alrededor, mediante la definición de un soporte LayerList Drawable
, que se traduce en recursos que no se encuentra una excepción:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="?attr/homeIcon" />
</layer-list>
Resumen quiero acceder a la
Drawable
definido en una personalizado definidoTheme
programmatically.
Califíquelo si le conviene. – dmaxi
Gracias :) ¡funcionó! – Shardul
¡Trabajó para mí para ...! ¡Gracias! :) – DroidBee