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 :

Etat d'un bouton cliqué


Sujet :

Composants graphiques Android

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 35
    Points : 27
    Points
    27
    Par défaut Etat d'un bouton cliqué
    Salut à tous, j'ai suivi un tutoriel sur comment utiliser un background pour un bouton avec différent état mais ca ne semble pas marché :S ...

    Voici le code xml du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/boutonn" android:state_window_focused="false"/>
        <item android:drawable="@drawable/boutonnpousse" android:state_pressed="true"/>
        <item android:drawable="@drawable/boutonnpousse" android:state_focused="true"/>
        <item android:drawable="@drawable/boutonn" android:state_focused="false" 
        android:state_pressed="false" />
     
    </selector>
    J'ai mi ce fichier xml dans mon dossier drawable sous le nom de imagebutton1.xml

    Ensuite au niveau de l'xml de mon activité voila la partie du code ou j utilise le bouton :

    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
     
        <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/backgrounddd"
        android:orientation="vertical" >
     
                <Button
                    android:id="@+id/bNoteRemind"
                    android:layout_width="100dp"
                    android:layout_height="100dp"
                    android:layout_gravity="center"
                    android:background="@drawable/imagebutton1" /> 
        ...
    Et le java :


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public class MenuPrincipal extends Activity {
     
        Button NoteRemind;          
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
     
            //on lui associe le layout menuprincipal.xml
            setContentView(R.layout.menuprincipal);
     
            NoteRemind = (Button) findViewById(R.id.bNoteRemind);     
     
            // Si on choisit de rédiger une nouvelle task on va être rediriger sur l'activité NoteReminder
     
            NoteRemind.setOnClickListener(new View.OnClickListener() {
     
                public void onClick(View v) {
                    // TODO Auto-generated method stub
     
                    //On créé l'Intent qui va nous permettre d'afficher l'autre Activity
                    //Mettez le nom de l'Activity dans la quelle vous êtes actuellement pour le premier parametre
                    v.setPressed(true);
     
                    Intent intent = new Intent(MenuPrincipal.this, NoteReminder.class);
                    //Intent intent = new Intent(MenuPrincipal.this, Teste2.class);
                    //On démarre l'autre Activity
                    startActivity(intent);
     
     
                }
            }); ....
    Le bouton s'affiche bien dans l'état par défaut mais lorsque je clique dessus il ne change pas d'état et garde le meme background :S

    Est ce que quelqu'un voit une erreur dans mon code ?

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut,

    dans ton selector met seulement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <selector>
    <item android:drawable="@drawable/boutonn" android:state_selected="true"></item>
    <item android:drawable="@drawable/boutonnpousse" android:state_selected="false"></item>
    </selector>
    Sinon regard du coté des transition si tu veux que ton bouton garde un état pendant un temps donné.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Salut gressif, j'ai essayé ta solution mais malheureusement ca n a pas fonctionné :p en fait mtn mes bouton on comme background l'image qu'ils devraient avoir lorsqu'ils sont poussé et lorsque je pousse dessus leur état ne changent pas :S

  4. #4
    Membre du Club
    Homme Profil pro
    etuidiant
    Inscrit en
    Octobre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : etuidiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 64
    Points : 50
    Points
    50
    Par défaut
    Ajoute peut etre des propriété comme

    focusable="true" et android:focusableInTouchMode=true quand tu déclare ton bouton dans l xml ...

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Le state selector va prendre le tout premier item qui "match" l'état courant:

    Vu ton XML ca se traduit par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (button.isWindowFocused())
        return R.drawable.boutonn;
    if (button.isPressed())
        return R.drawable.bouttonpousse;
    if (button.isFocused())
        return R.drawable.bouttonpousse;
    if (!button.isFocused() && !button.isPressed())
        return R.drawable.bouttonn;
    Comme tu le vois, déjà, il manque l'état "par défaut".... Et si la fenetre du bouton est "focused" (99% du temps), ca sera systématiquement l'état "libre" qui sera retourné !

    Je pense que tu devrais faire comme dit gressif, mais légèrement corrigé, à savoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <selector>
    <item android:drawable="@drawable/boutonnpousse" android:state_pressed="true"></item>
    <item android:drawable="@drawable/boutonn"></item>
    </selector>
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Merci pour votre aide !! je commence a devenir fou je retourne le code dans tout les sens et soit mon bouton a comme background boutonnpousse.png soit boutonn.png mais jms l'état ne change au clic :'( :'( :'( Je sais pas si le fait que j'ai plusieur bouton sur la page change quelque chose :s ? par rapport au focuse ou quoi ...

    Voici mon code en tout cas :

    l'xml de l activity

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    ...
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="50dp"
            android:orientation="horizontal"
            android:weightSum="100" >
     
            <!-- BOUTON OPTION 1 -->
     
            <LinearLayout
                android:layout_width="135dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginRight="10dp"
                android:layout_weight="50"
                android:orientation="vertical" >
     
                <Button
                    android:id="@+id/bNoteRemind"
                    android:layout_width="100dp"
                    android:layout_height="100dp"
                    android:layout_gravity="center"
                    android:background="@drawable/imagebutton1"/>
     
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginTop="5dp"
                    android:text="Note a reminder"
                    android:textColor="#000000"
                    android:textSize="13dp" />
            </LinearLayout>
     
            <!-- BOUTON OPTION 2 -->
     
            <LinearLayout
                android:layout_width="135dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginLeft="10dp"
                android:layout_weight="50"
                android:orientation="vertical" >
     
                <Button
                    android:id="@+id/bConsultRemind"
                    android:layout_width="100dp"
                    android:layout_height="100dp"
                    android:layout_gravity="center"
                    android:background="@drawable/imagebutton1" />
     
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginTop="5dp"
                    android:text="Consult reminders"
                    android:textColor="#000000"
                    android:textSize="13dp" />
            </LinearLayout>
        </LinearLayout>
     
    ...
    l'xml du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?xml version="1.0" encoding="utf-8"?>
     
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
     
    <item android:drawable="@drawable/boutonnpousse" android:state_selected="true"></item>
    <item android:drawable="@drawable/boutonn"></item>
    </selector>
    le code java :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    public class MenuPrincipal extends Activity {
     
    	Button NoteRemind;			
    	Button ConsultRemind;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
     
    		setContentView(R.layout.menuprincipal);
     
            NoteRemind = (Button) findViewById(R.id.bNoteRemind);
            ConsultRemind = (Button) findViewById(R.id.bConsultRemind);       
     
     
            NoteRemind.setOnClickListener(new View.OnClickListener() {
     
    			public void onClick(View v) {
     
     
    				Intent intent = new Intent(MenuPrincipal.this, NoteReminder.class);
     
    				startActivity(intent);
     
    			}
    		});
     
            ConsultRemind.setOnClickListener(new View.OnClickListener() {
     
    			public void onClick(View v) {
     
    				Intent intent = new Intent(MenuPrincipal.this, ConsultReminder.class);
     
    				startActivity(intent);
     
    			}
    		});
    ...
    Je comprends pas pq ca ne marche pas :s

  7. #7
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    tu as essayé "state_pressed" au lieu de "state_selected" comme je te l'avais indiqué ?

    http://developer.android.com/guide/t...html#StateList
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par nicroman Voir le message
    tu as essayé "state_pressed" au lieu de "state_selected" comme je te l'avais indiqué ?

    http://developer.android.com/guide/t...html#StateList
    ==> je tacherai de mieu lire ta réponse la prochaine fois nicroman ! Un grand merci ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JButton] récupération valeur bouton cliqué
    Par Adren dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/10/2006, 14h09
  2. [FLASH 8] Garder un bouton cliqué
    Par iceman2001 dans le forum Flash
    Réponses: 11
    Dernier message: 29/06/2006, 11h08
  3. Réponses: 7
    Dernier message: 15/06/2006, 22h18
  4. changer image lorsque bouton cliqué
    Par mussara dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/11/2004, 12h43
  5. wxWidgets : connaître l'etat d'un bouton !
    Par FSF_Sterl dans le forum wxWidgets
    Réponses: 5
    Dernier message: 14/08/2004, 08h55

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