2013-10-25 16 views
5

vô hiệu hóa tôi đã thiết lập DrawerLayout với một ngăn kéo ở hai bênNavigationDrawer đúng swipe

<FrameLayout android:id="@+id/navigation_drawer" 
    android:layout_width="@dimen/navigation_drawer_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" /> 


<FrameLayout android:id="@+id/navigation_drawer_right" 
    android:layout_width="@dimen/navigation_drawer_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="end" /> 

Các ngăn kéo bên phải được điền khi phương pháp nhất định được điều hành, tuy nhiên, trước khi phương pháp đó được chạy tôi có thể vuốt từ bên phải và màn hình mờ nhưng không có gì hiển thị (vì bố cục trống cho đến khi phương thức được chạy).

Làm cách nào để vô hiệu hóa vuốt từ bên phải cho đến khi phương pháp được chạy? Tôi đã thấy các giải pháp để tắt hoàn toàn bất kỳ thao tác vuốt nào, nhưng điều đó sẽ không hoạt động đối với tôi vì ngăn kéo bên trái cần phải luôn hoạt động (chức năng vẽ thiết lập phải được gọi khi tùy chọn cụ thể được chọn trên ngăn kéo bên trái).

Hoặc, có cách nào tốt hơn để thực hiện việc này không? Có thể tự động thêm FrameLayout phù hợp khi chức năng được chạy?

Trả lời

8

này vô hiệu hóa các swipe:

mDrawerLayout = (DrawerLayout) findViewById(R.id.navigation_drawer_right); 
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

Và để cho phép swipe:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); 
4

Một chút cập nhật câu trả lời. Bạn cần phải vượt qua chế độ xem ngăn phải để tắt vuốt trên đó.

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, findViewById(R.id.right_drawer)); 
+4

bạn cũng có thể thực hiện 'mDrawerLayout.setDrawerLockMode (DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);' –

4

Chỉ cần đề cập đến một quan sát thú vị.

Trong trường hợp bạn đang sử dụng một cấu trúc bố trí vì đã rời VÀ menu bên phải như thế này một:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true"> 

<!-- MAIN CONTAINER --> 

    <include layout="@layout/content_home" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/toolbar"/> 


<!-- LEFT SIDE MENU --> 

<RelativeLayout 
    android:id="@+id/left_side_menu" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="start" 
    android:visibility="visible" 
    android:fitsSystemWindows="false" 
    android:background="@color/green"> 


    <!-- put some menu items in here --> 

</RelativeLayout> 



<!-- RIGHT SIDE MENU --> 
<RelativeLayout 
    android:id="@+id/right_side_menu" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="end" 
    android:visibility="visible" 
    android:fitsSystemWindows="false" 
    android:background="@color/gray"> 

    <!-- put some items in here --> 

</RelativeLayout> 

Bạn đang gonna có một thời gian khó khăn cố gắng để chỉ vô hiệu hóa một trong những bên menu với báo cáo như thế này một:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, findViewById(R.id.right_drawer)) 

Đó sẽ khóa toàn bộ DrawerLayout và bạn sẽ không thể vuốt không ai trong số các menu phụ .

Do đó, phương pháp được đề xuất bởi @Alberto Maluje, theo một trong các câu trả lời ở trên, sẽ giúp bạn linh hoạt hơn.

mDrawerLayout.setDrawerLockMode (DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);

Các vấn đề liên quan