2010-11-29 22 views

Répondre

3

Utilisez quelque chose comme:

views.setImageViewBitmap(R.id.widgetBackground, ((BitmapDrawable)context.getResources().getDrawable(R.drawable.YOUR_BACKGROUND)).getBitmap()); 

fichier YOUR_BACKGROUND est un .png. L'objet views Object est une instance de RemoteViews. Vous pouvez obtenir l'instance en utilisant:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 

Et ne pas oublier de mettre à jour le Widget après ces changements.

AppWidgetManager mgr = AppWidgetManager.getInstance(context); 
ComponentName me = new ComponentName(context, Widget.class); 
mgr.updateAppWidget(me, views); 
+1

Sur quel type de vue l'utilisez-vous? Je l'ai essayé sur un LinearLayout et ai fait exploser Android sur moi: – NPike

+0

Problème de chargement widhet si la disposition du widget est un ListView – Choletski

1

Vous pouvez définir l'image d'arrière-plan ou toute autre valeur à l'aide de setInt ou d'autres méthodes dans RemoteViews.

remoteViews.setInt (R.id.widget_layout, "setBackgroundResource", R.drawable.myshape_red);

L'exemple ci-dessus est ce que j'ai utilisé pour changer le widget à une autre forme drawable. Vous devez passer dans un "id" plutôt que juste la référence de mise en page si.

Veuillez noter que cela ne fonctionne pas avec 2.1.

+0

Cela ne fonctionne pas, lève l'avertissement suivant: W/AppWidgetHostView (152): android.widget.RemoteViews $ ActionException: vue: android.widget.ImageView ne peut pas utiliser la méthode avec RemoteViews: setBackgroundResource (int) – Egor

+0

Semble à travailler quand je l'ai fait ici. https://github.com/trajano/GasPrices/blob/master/src/main/java/net/trajano/gasprices/GasPricesWidgetProvider.java (voir les lignes 27 à 46) –

+0

Maintenant, je l'ai essayé sur Android 2.1 et travaillé. Avant cela, je l'ai essayé sur Android 1.6 et cela n'a pas fonctionné. C'est bizarre car la documentation dit que cette méthode est disponible depuis le niveau 3 de l'API. – Egor