我创建了一个带有禁用滑动选项的SlidingPaneLayout。
public class SlidingPaneLayoutNoSwipe extends SlidingPaneLayout {
public SlidingPaneLayoutNoSwipe(Context context) {
super(context);
}
public SlidingPaneLayoutNoSwipe(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SlidingPaneLayoutNoSwipe(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}
}布局:其中includeSide是侧菜单,includeMain是主布局
<com.mypackage.SlidingPaneLayoutNoSwipe
android:id="@+id/slidingPaneMain"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/includeSide"
layout="@layout/layout_side"/>
<include
android:id="@+id/includeMain"
layout="@layout/layout_main"/>
</com.mypackage.SlidingPaneLayoutNoSwipe>菜单是通过按钮打开的,在剩余的includeMain上有一个覆盖。
我想通过点击覆盖区域来关闭菜单。
我试图将onClickListener添加到includeMain的根布局中
<LinearLayout
android:id="@+id/layoutMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:background="@drawable/header_background"
android:orientation="vertical">守则:
mLayoutMain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mSlidingPane.isOpen()){
mSlidingPane.closePane();
}
}
});但不起作用。我怎么能这么做?
发布于 2013-11-26 13:43:37
事实上,答案比我想象的要简单得多:
public class SlidingPaneLayoutNoSwipe extends SlidingPaneLayout {
public SlidingPaneLayoutNoSwipe(Context context) {
super(context);
}
public SlidingPaneLayoutNoSwipe(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SlidingPaneLayoutNoSwipe(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(isOpen()){
return super.onInterceptTouchEvent(ev);
}
return false;
}
}现在它可以通过点击和滑动关闭。
https://stackoverflow.com/questions/20218425
复制相似问题