2

我有一个带有viewFlipper 和slidingDrawer 的活动。SlidingDrawer 的处理程序包含一个可点击的额外按钮。

问题是,处理程序上的额外按钮仅在slidingDrawer 被锁定时注册onClick,当slidingDrawer 被锁定时,viewFlipper(布局的其余部分)不再响应gestureListener,因此我无法在视图之间翻转。

有没有人对如何在slidingDrawer的处理程序上制作一个额外的按钮可点击有任何建议,同时在viewFlipper上有一个工作的手势监听器?

也许有人知道为什么slidingDrawer.lock() 会阻止其余布局的触摸输入?

谢谢!

4

3 回答 3

0

这个解决方案对我有用:扩展 SlidingDrawer 并覆盖 onTouchEvent 方法(如果slidingdrawer被锁定,应该返回false而不是true):

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);
        }
    }
}
于 2014-04-30T15:13:06.600 回答
0

这是一个已知问题 请参阅此解决方案 http://code.google.com/p/android/issues/detail?id=17844

于 2012-05-04T02:41:42.357 回答
-1

我找到了导致这种情况的sliderDrawer 的哪一部分。如果slidingDrawer 被锁定,onInterceptTouchEvent() 方法返回false。

无论如何,我通过创建一个上下滑动的新活动来伪造一个slidingDrawer,从而“解决”了这个问题:

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

缺点当然是不能再用手指拖动抽屉了。

于 2011-02-08T12:08:42.223 回答