IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Changer le backgroud d'un bouton lors d'un click


Sujet :

Composants graphiques Android

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 91
    Par défaut Changer le backgroud d'un bouton lors d'un click
    Bonjour,
    Je voudrais changer le background d'un bouton dans un widget quand je clicque au dessus.
    voici mon code:
    dans widget.xml -- le layout d'un widget
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <Button android:id="@+id/widget_button"
    	android:layout_height="wrap_content"	
    	android:layout_width="wrap_content"
    	android:layout_gravity="center_horizontal|center"
    	android:layout_marginTop="5dip"
    	android:padding="10dip"
    	android:soundEffectsEnabled="true"
    	android:background="@drawable/close2"/>
    widget.xml est utilisé dans widget_provider.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="146dip"
    android:minHeight="72dip"
    android:updatePeriodMillis="10000"
    android:initialLayout="@layout/widget"
    />
    dans la méthode onUpdate du widget.java, je lance une activity - updateCard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    		RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
    		Intent update = new Intent(context, UpdateCard.class);
    		update.setAction(ACTION_WIDGET_CLICK);
     
    		PendingIntent actionPendingIntent = PendingIntent.getActivity(context, 0, update, 0);
     
    		remoteViews.setOnClickPendingIntent(R.id.widget_button, actionPendingIntent);
     
    		appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
    	}
    enfin dans la méthode onCreate de l'activity UpdateCard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
            setContentView(R.layout.waitprogress);
            // Log In
            loginDialog = new LogInDialog(this);
     
            okButton = (Button)loginDialog.findViewById(R.id.login_ok_bt);
            okButton.setOnClickListener(this);
            loginDialog.show();
    	}
    et dans onClick
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Button wallet = (Button) this.findViewById(R.id.widget_button);
    wallet.setBackgroundResource(R.drawable.open2);
    Mais ça n'a pas marché, erreur vient de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wallet.setBackgroundResource(R.drawable.open2);
    quelqu'un a une idée?

    merci

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 91
    Par défaut
    j'ai une petite idée:
    dans OnClick() de l'activity updateCard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button wallet = (Button) this.findViewById(R.id.widget_button);
    peut être incorrect?
    parce que widget_button n'est pas dans le layout de updateCard.. (il n'y a rien dans le layout de updateCard)

    mais je ne sais pas comment le corriger..

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 91
    Par défaut
    le problème est plutôt "comment changer l'image d'un widget?"

    quand je clique sur l'image de widget, il change l'image..

    ça doit être dans le AppWidgetProvider? OnRecieve?
    quel qu'un a une idée?
    merci

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    Citation Envoyé par lansher1985 Voir le message
    le problème est plutôt "comment changer l'image d'un widget?"
    i
    Pour resoudre ton problème voici les etapes à suivres

    1. Creer un fichier de nom custom_button.xml ( un nom quelconque). Ce fichier xml sera stocké dans res/drawable .

    Voici un exemple de contenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android"
    >
    	<item
    		android:state_focused="true"
    		android:state_pressed="false"
    		android:drawable="@drawable/button_pressed" />
    	<item
    		android:state_focused="true"
    		android:state_pressed="true"
    		android:drawable="@drawable/button2" />
    	<item
    		android:state_focused="false"
    		android:state_pressed="true"
     
    		android:drawable="@drawable/button3" />
     
    	<item
     
    		android:drawable="@drawable/button_default" />
    </selector>


    2. Ensuite voici ce que doit ressembler ton code layout.

    Dans un layout quelqconque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    <ImageButton
    				android:layout_width="wrap_content"
    				android:src="@drawable/custom_button"
    				android:id="@+id/dialogue_website"
    				android:background="@null"
    				android:layout_height="wrap_content"
    			></ImageButton>

    Ainsi ce bouton changera de couleur selon qu'il est pressé, cliqué ou autre.
    Par exemple quand le bouton est cliqué : sa couleur sera button_pressed.
    Par defaut il prend la forme de button_default.

    Il faut signaler que les button_pressed, button_default sont des images à placer dans res/drawable.

    3. Esperons t'avoir aidé.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/05/2014, 18h16
  2. changer le background d'un bouton lors du survol en wpf
    Par Invité dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 17/11/2013, 22h49
  3. Réponses: 1
    Dernier message: 20/04/2011, 09h23
  4. changer couleur d un autre div lors d un click
    Par romocop dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/10/2010, 14h35
  5. Changer la couleur d'un bouton lors du survol.
    Par DetoX dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 15/05/2009, 20h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo