【问题标题】:Android: Slidingdrawer.lock() blocking touch input for the rest of the layoutAndroid:Slidingdrawer.lock() 阻止其余布局的触摸输入
【发布时间】:2011-06-22 20:06:12
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

    标签: android locking onclick slidingdrawer gesturedetector


    【解决方案1】:

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

    【讨论】:

    • 这是一个普遍的想法,我们不提交只是链接的答案。
    【解决方案2】:

    这个解决方案对我有用:扩展 SlidingDrawer 并覆盖 onTouchEvent 方法(如果 slipdrawer 被锁定,应该返回 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);
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-01
        • 2017-01-10
        相关资源
        最近更新 更多