2011-02-07 2 views
2

У меня есть активность с viewFlipper и slideDrawer. Обработчик SlidingDrawer содержит дополнительную кнопку, которую можно щелкнуть.Android: Slidingdrawer.lock() блокирует сенсорный ввод для остальной части макета

Проблема заключается в том, что дополнительная кнопка на обработчике регистрируется только вкл., Когда скользящее устройство заблокировано, а когда скользящее устройство заблокировано, viewFlipper (остальная часть макета) больше не отвечает на gestureListener, и поэтому я не могу перевернуть между видами.

Есть ли у кого-нибудь предложения о том, как сделать дополнительную кнопку на обработчике slideDrawer кликабельным и в то же время иметь рабочий gesturelistener на viewFlipper?

Возможно, кто-то знает, почему slideDrawer.lock() блокирует сенсорный ввод для остальной части макета?

Спасибо!

ответ

-1

Я нашел, какая часть раздвижного устройства, которая вызывала это. Метод onInterceptTouchEvent() возвращает false, если lockDrawer заблокирован.

Во всяком случае, я «решить» эту проблему путем fakeing в slidingDrawer, создавая Wich новый активность скользит вверх и вниз с помощью:

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

Недостатком является то, конечно, что он больше не является возможным, чтобы перетащить ящик с твой палец.

0

это решение работает для меня: расширить SlidingDrawer и переопределить onTouchEvent метод (должен возвращать ложь и не верно, если slidingdrawer заблокирован):

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); 
     } 
    } 
} 
Смежные вопросы