Android: Slidingdrawer.lock () блокирует сенсорный ввод для остальной части макета - PullRequest
2 голосов
/ 07 февраля 2011

У меня есть Activity с viewFlipper и slideDrawer.Обработчик SlidingDrawer содержит дополнительную кнопку, которую можно щелкнуть.

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

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

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

Спасибо!

Ответы [ 3 ]

0 голосов
/ 04 мая 2012

Это известная проблема. Смотреть это решение http://code.google.com/p/android/issues/detail?id=17844

0 голосов
/ 30 апреля 2014

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

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);
        }
    }
}
0 голосов
/ 08 февраля 2011

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

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

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

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

...