2012-10-17 3 views
0

J'ai quelques ImageView « s:ImageView, sélecteur et en un clic, sur long-cliquez sur

Le sélecteur de bouton fléché de droite est:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="3" android:state_pressed="true"/> <!-- pressed --> 
    <item android:drawable="1" android:state_enabled="false"/> <!-- enabled --> 
    <item android:drawable="2"/> <!-- default --> 

</selector> 

(1, 2, 3 ressembler ceux de l'image ci-dessous - 1 est pour le bouton flèche gauche, mais celui de droite ressemble à la même chose dans le sens inverse).

Maintenant, mon problème est:

  1. Lorsque l'utilisateur ne clique, j'utilise setEnable() pour changer son statut. Ça marche.
  2. Lorsque l'utilisateur clique à nouveau longtemps, j'utilise setEnable() pour modifier son état. Mais après que l'utilisateur a libéré son doigt, le bouton conserve le statut de l'image #3.
  3. J'ai essayé: cancelLongPress(), clearFocus(), invalidate(), post(Runnable), postInvalidate(), refreshDrawableState() ... mais ils ne fonctionnent pas.

L'application utilise le SDK 4 minimum (Android 1.6). Pourriez-vous m'aider?

Merci,

Répondre

0

Solution temporaire:

... 
imageView.setOnTouchListener(new View.OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_UP) { 
      v.postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        v.setEnabled(...); 
       }// run() 
      }, 200); // 200 ms is enough 
     } 

     return false; 
    }// onTouch() 
}); 
Questions connexes