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:
Nom : Capture.JPG
Affichages : 508
Taille : 19,3 Ko

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.
Nom : Capture3.jpg
Affichages : 504
Taille : 36,2 Ko


Voici mon fichier MainActivity.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
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 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
<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 btn_custom.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>
Voici mon fichier strings.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>
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
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>
Merci pour l'aide.