我有一个带有viewFlipper和一个slidingDrawer的Activity。 SlidingDrawer的Handler包含一个可点击的额外按钮。
问题是,处理程序上的额外按钮仅在slidingDrawer被锁定时注册onClick,而当slidingDrawer被锁定时,viewFlipper(布局的其余部分)不再响应gestureListener,因此我无法翻转在观点之间。
有没有人对如何在slidingDrawer的处理程序上点击一个额外的按钮有任何建议,同时在viewFlipper上有一个有效的gesturelistener?
也许有人知道为什么slidingDrawer.lock()会阻止其余布局的触摸输入?
谢谢!
答案 0 :(得分:0)
这是一个已知问题 看到这个解决方案 http://code.google.com/p/android/issues/detail?id=17844
答案 1 :(得分:0)
此解决方案适用于我:扩展SlidingDrawer并覆盖onTouchEvent方法(如果slidedrawer被锁定,则应返回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);
}
}
}
答案 2 :(得分:-1)
我发现了导致这个问题的slidingDrawer的哪个部分。如果slidingDrawer被锁定,则onInterceptTouchEvent()方法返回false。
无论如何,我通过创建一个使用以下方式上下滑动的新Activity来伪装一个slidingDrawer来“解决”这个问题:
startActivity(yourIntent);
overridePendingTransition(R.anim.yourNextActivity_InAnimation, R.anim.yourCurrentActivity_OutAnimation);
缺点是不能再用手指拖动抽屉了。