Bonjour
J'ai simplifié mon problème au maximum puisque je ne réussis toujours pas à faire fonctionner ce simple bouton avec l'affichage de ses 3 états qu'il devrait me donner.
J'ai tenté plusieurs exemples de plusieurs sites et le dernier est: http://developer.android.com/guide/t...ls/button.html.
Malgré que je tente de suivre (à la lettre) leurs cheminements, l'affichage de mon arrière-plan du bouton pressed s'affiche comme focused
et de plus, il ne verrouille pas sur la valeur Pressed mais retourne plutôt à sa valeur par Défaut.
J'ai intégré une variable update dont j'affiche en haut son état pour vérifier l'état du bouton et il verrouille pourtant bien.
- L'état du bouton qui est affiché sont l'état normal (le bouton est désélectionné ou pas encore pesé).
- Pendant tout le temps que je clique sur le bouton, c'est l'arrière-plan Pressed qui s'affiche au lieu de Focused.
- Et finalement, lorsque je relâche le bouton, il retourne à l'arrière-plan par Défaut au lieu d'afficher Pressed.
J'ai tenté de modifier l'ordre dans mon fichier style sans succès.
Plusieurs des autres exemples utilisent les flags Android:state_enabled ou Android:state_window_focused mais le résultat est toujours le même.
Je ne trouve pas cette solution même aussi simple que possible...
Un petit coup de main serait apprécié.
Voici les 4 états possibles de mes boutons:
et finalement les 5 états que j'obtiens lorsque je clique sur le fameux bouton: Avant, Cliqué et Relâché, Cliqué et Relâché.
Ce que j'ai compris de tous les exemples c'est que le mode Cliqué devrait me donner l'image Focused
et que le mode Relaché devait me donner l'image Pressed ce qui n'est pas le cas.
Pourtant, mon code réussit à verrouiller la variable.
Ce type de programmation est aussi supporté depuis l'API 14.
Voici mon fichier MainActivity.java:
Voici mon fichier activity_main.xml:
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 package com.mario.stylebouton; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { Button button_send; private TextView textViewResult; // Texte explicatif de la valeur choisie private boolean update = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Affichage de la valeur par défaut de la sélection Accueil textViewResult = (TextView) findViewById(R.id.textView1); textViewResult.setText(R.string.bouton_normal); button_send = (Button) findViewById(R.id.button_send); button_send.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { clickBouton("1"); } }); } //Méthode qui est exécutée lorsque l'on clique sur un bouton public void clickBouton(String str) { if(update){ update = false; //Toggle du bouton textViewResult.setText(R.string.bouton_normal); }else{ update = true; //Toggle du bouton textViewResult.setText(R.string.bouton_pressed); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Voici mon fichier btn_custom.xml:
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 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.mario.stylebouton.MainActivity" > <Button android:id="@+id/button_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:onClick="sendMessage" android:background="@drawable/btn_custom" android:gravity="fill_horizontal|center" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="15dp" android:layout_marginTop="30dp" android:text="@string/bouton_normal" android:textColor="@color/rouge" /> </RelativeLayout>
Voici mon fichier strings.xml:
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/button_focused" android:state_focused="true" /> <item android:drawable="@drawable/button_pressed" android:state_pressed="true" /> <item android:drawable="@drawable/button_default" /> </selector>
Et finalement mon fichier AndroidManifest.xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">StyleBouton V1.0</string> <string name="bouton_normal">Bouton en état NORMAL (Défaut)</string> <string name="bouton_pressed">Bouton en état ACTIF (Pressed)</string> <string name="bouton_focused">Bouton en état Focussed</string> <string name="txt_bouton">Bouton</string> <string name="action_settings">Préférences</string> </resources>
Merci pour l'aide.
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 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mario.stylebouton" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="15" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Partager