Android:Slidingdrawer.lock() 阻止其余布局的触摸输入
Posted
技术标签:
【中文标题】Android:Slidingdrawer.lock() 阻止其余布局的触摸输入【英文标题】:Android: Slidingdrawer.lock() blocking touch input for the rest of the layout 【发布时间】:2011-06-22 20:06:12 【问题描述】:我有一个带有 viewFlipper 和 slipDrawer 的 Activity。 SlidingDrawer 的处理程序包含一个可点击的额外按钮。
问题是,处理程序上的额外按钮仅在slidingDrawer被锁定时注册onClick,当slidingDrawer被锁定时,viewFlipper(布局的其余部分)不再响应gestureListener,因此我无法翻转视图之间。
有没有人对如何在slidingDrawer 的处理程序上制作一个额外的按钮可点击,同时在viewFlipper 上有一个工作的手势监听器有任何建议?
也许有人知道为什么slidingDrawer.lock() 会阻止布局其余部分的触摸输入?
谢谢!
【问题讨论】:
【参考方案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);
当然缺点是不能再用手指拖动抽屉了。
【讨论】:
以上是关于Android:Slidingdrawer.lock() 阻止其余布局的触摸输入的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )