2011-02-05 1 views
0


J'écris un AppWidget sur lequel je dois contrôler par programme son image de fond. De plus, je dois afficher [superposer] les messages texte. Je dois également réagir à l'interaction de l'utilisateur ("clics"). Ma preuve de concept (qui fonctionne déjà) est la suivante:AppWidget avec l'image de fond + Texte + clic (tap) événement

a) J'ai un ImageButton sur ma disposition principale.
b) J'ai une intention personnalisée que je suis en train de traiter onReceive(). Je modifie ensuite son image d'arrière-plan via la méthode RemoteViews.setImageViewResource. Cela fonctionne presque bien, sauf pour le fait que je ne peux pas avoir/set de texte sur un ImageButton.
c) J'ai remplacé a) par un bouton. Je peux maintenant écrire du texte sur le bouton, mais je n'arrive pas à trouver un moyen de changer son image de fond.

Je suis donc bloqué sur une boucle: je n'ai pas encore trouvé le moyen d'atteindre les trois objectifs de mon appWidget: une image + cliquable + avec du texte.

Depuis que je suis nouveau sur Android, je vous demande des conseils pour les directions.
Merci à l'avance
Pedro

Répondre

0

Étape # 1: Créer une mise en page avec un LinearLayout (ou autre) et un TextView.

Étape # 2: Utilisez la disposition ci-dessus pour votre widget application, mettre votre fond sur le LinearLayout, votre texte dans la TextView, et votre clic PendingIntents sur un ou les deux (vous n'avez pas indiqué ce qui est censé être cliqué).

Étape 3: Il n'y a pas d'étape 3.

+0

Merci, @CommonsWare pour l'expression magique "... sur un ou les deux ...". J'ai aussi fait des expériences avec TextViews, mais j'ai complètement oublié le fait que je puisse définir PendingIntent à plusieurs endroits. C'était surtout un problème d'état d'esprit + nouveau venu sur cette plateforme. À la vôtre, Pedro. – pfonseca

+0

Je contrôle mes intentions maintenant, mais je ne peux toujours pas modifier l'arrière-plan de ma mise en page par programme. Je l'ai googlé abondamment, et il semble que ce ne soit pas possible. Avoir plusieurs mises en page (chacune avec son image bg) et définir leur visibilité l'option la plus propre? Merci. – pfonseca

+0

@pfonseca: Vous pouvez appeler 'setBackgroundColor()' et 'setBackgroundResource()' via 'setInt()' sur 'RemoteViews'. Au-delà de cela, la solution la plus simple est probablement des fichiers de mise en page séparés par arrière-plan et choisissez le bon lorsque vous créez votre 'RemoteViews'. Vous pouvez faire – CommonsWare

Questions connexes