2011-02-07 1 views
2

J'ai une activité avec un viewFlipper et un slidingDrawer. Le gestionnaire de SlidingDrawer contient un bouton supplémentaire cliquable. Le problème est que le bouton supplémentaire sur le gestionnaire enregistre seulement onClick lorsque le slidingDrawer est verrouillé, et lorsque le slidingDrawer est verrouillé, viewFlipper (le reste de la disposition) ne répond plus à la gestureListener et donc je ne peux pas basculer entre les vues.Android: Slidingdrawer.lock() bloquant l'entrée tactile pour le reste de la mise en page

Est-ce que quelqu'un a des suggestions sur comment rendre un bouton supplémentaire sur un gestionnaire de slideDrawer cliquable et en même temps avoir un gesturelistener de travail sur le viewFlipper?

Peut-être que quelqu'un sait pourquoi slidingDrawer.lock() bloquerait l'entrée tactile pour le reste de la mise en page?

Merci!

Répondre

-1

J'ai trouvé la partie du slidingDrawer à l'origine de cette erreur. La méthode onInterceptTouchEvent() renvoie false si le slidingDrawer est verrouillé.

Quoi qu'il en soit, je « résolu » ce problème en fakeing un slidingDrawer en créant une nouvelle activité Wich glisse vers le haut et vers le bas à l'aide:

startActivity(yourIntent); 
    overridePendingTransition(R.anim.yourNextActivity_InAnimation, R.anim.yourCurrentActivity_OutAnimation); 

L'inconvénient est bien sûr qu'il est plus possible de faire glisser le tiroir ton doigt.

0

cette solution fonctionne pour moi: étendre SlidingDrawer et remplacer la méthode onTouchEvent (doit retourner faux et pas vrai si slidingdrawer est verrouillé):

package xxx.slidingdrawer; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.view.MotionEvent; 

@SuppressWarnings("deprecation") 
public class SlidingDrawer extends android.widget.SlidingDrawer { 

    private boolean mLocked; 

    public SlidingDrawer(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    public void lock() { 
     super.lock(); 
     mLocked = true; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (mLocked) { 
      return false; 
     } else { 
      return super.onTouchEvent(event); 
     } 
    } 
} 
Questions connexes