2012-04-04 29 views
6

He estado siguiendo un tutorial que explica cómo utilizar el fondo para un botón con diferentes estados pero no parece funcionar: Spulsa el botón androide estado

Aquí está mi código:

<?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> 

Este es un código XML que he colocado en mi carpeta estirable, aquí es una parte del xml de la actividad que utilice estos botones:

<?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" /> 
    ... 

y aquí está la clase java:

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); 


      } 
     }); .... 

El botón se muestra bien, pero cuando lo presiono no muestra la imagen presionada: s ¡No entiendo lo que estoy haciendo mal!

¿Alguien ve un error en alguna parte ???


¿Dónde debería poner esas líneas? Yo los he puesto en mi botón xml

<Button 
     android:id="@+id/bNoteRemind" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_gravity="center" 
     android:background="@drawable/imagebutton1" 
     android:focusable="true" 
     android:focusableInTouchMode="true" /> 

Pero ahora mi botón de fondo cambia a la imagen presionado sin mí presionándolo: py no cambia

+2

prueba después de botón de configuración 'androide: enfocable = "true" y' 'androide: focusableInTouchMode = true' –

+0

[http://stackoverflow.com/questions/11978880/cómo-a-cambio de color-de-botón de palanca-] [1] Consulte este favor [1]: http://stackoverflow.com/ preguntas/1 1978880/how-to-change-color-of-the-toggle-button – haris

Respuesta

18

¿Está el Button lo único que ha mostrado en tu Activity? Si es así, se enfocará (desencadenando el tercer elemento en su selector) cuando se cargue la ventana y no podrá salir de ella. Si desea cambiar solo cuando se lo presiona, elimine esa tercera línea. Mientras lo hace, elimine la primera línea, ya que el botón nunca se presionará cuando la ventana no esté enfocada.

De hecho, sugiero este código:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/boutonnpousse" android:state_pressed="true"/> 
    <item android:drawable="@drawable/boutonn"/> 
</selector> 
+0

¿Cómo puedo cambiar la velocidad de la animación al presionar? – wutzebaer

Cuestiones relacionadas