2010-01-26 7 views
0

J'ai une application avec un widget mais j'ai de la difficulté avec la disposition du widget.Fond de texte Widget Android

L'idée de base est de savoir si le widget devrait ressembler à une icône et comporter une petite balise de texte en-dessous comme n'importe quelle autre icône sur le bureau.

Je trouve un exemple qui utilise un androïde: l'arrière-plan pour TextView et utilise un XML drawable:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#AA111111"/> 
<padding android:left="5dp" 
    android:right="5dp" 
    android:bottom="1dp" 
    android:top="1dp" /> 
<corners android:radius="8dp" /> 
</shape> 

Toutefois, cela ne fonctionne pas avec brio, le texte est tout simplement pas la même chose que les autres icônes le bureau et lorsque vous faites pivoter la partie téléphone du texte est coupé! Le problème suivant est la sélection du widget, j'utilise un ImageButton comme l'icône - avec l'android: fond mis à une image transparente. J'ai utilisé un autre fichier XML dessinable qui me permet de changer l'image quand le widget est sélectionné. Cependant, je préférerais l'action par défaut d'une icône, où le carré autour de l'icône devient orange.

Comment puis-je obtenir ces deux effets - Je sais qu'il est possible en quelque sorte que l'application "sms compte non lu" achève exactement ce que je veux arriver!

+0

Je ne suis pas d'accord avec cette réponse. Vous ne devriez certainement pas essayer de le faire. Il a été discuté ici: [http://stackoverflow.com/questions/2651631/android-home-screen-widget-icon-label-style/2652961#2652961](http://stackoverflow.com/questions/2651631/ android-écran-widget-icône-étiquette-style/2652961 # 2652961) –

Répondre

2

je ferais quelque chose comme:

<LinearLayout> 
    <ImageView/> 
    <TextView/> 
</LinearLayout> 

fond de LinearLayout serait <selector> alias StateListDrawable. Le sélecteur spécifie un arrière-plan transparent, qui devient orange lorsqu'il est sélectionné. LinearLayout serait aussi la vue sur laquelle vous définiriez votre PendingIntent afin que l'utilisateur puisse cliquer n'importe où dans la vue et il s'enregistrera comme un événement onClick. En ce qui concerne vos problèmes de mise en page, vous allez devoir jouer avec la mise en page pour que l'image et le texte ressemblent à d'autres icônes sur l'écran d'accueil. Je pense qu'il ne serait pas si difficile d'obtenir un ImageView centré horizontalement avec un TextView centré horizontalement en dessous, puis de modifier les dimensions de l'image et la taille du texte jusqu'à ce qu'elles ressemblent à d'autres icônes sur l'écran d'accueil. En ce qui concerne le problème que vous voyez lorsque vous passez en mode Paysage sur votre écran d'accueil, vous devez fournir une version paysage de votre fichier XML de mise en page modifiée pour s'afficher correctement en mode paysage. Voir ma réponse à this question pour la méthode de faire cela. Lorsque je fabrique des widgets d'application, l'apparence du portrait est généralement parfaite, puis je copie ce fichier de mise en page dans le répertoire layout-land et je commence à faire des réglages jusqu'à ce que je le souhaite en mode paysage.