簡體   English   中英

如何以編程方式顯示/隱藏導航抽屜

[英]How to show/Hide Navigation Drawer programmatically

我如何使用按鈕來顯示/隱藏導航抽屜,我已經使用這個SO 鏈接來創建和管理導航抽屜。

現在我正在使用(從左向右滑動 - 顯示)和(從右向左滑動 - 隱藏)

如何使用以下屏幕截圖中突出顯示的按鈕顯示/隱藏抽屜:

在此處輸入圖片說明

header_home.xml:

<RelativeLayout        
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:id="@+id/header_layout" 
    android:gravity="fill_horizontal" 
    android:layout_gravity="top|center">


 <TextView
    android:id="@+id/textHeader"
    android:text="Home"
    android:textColor="#ffffff"
    android:gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/bg_header"
 />

 <ImageButton
    android:id="@+id/btnDrawer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:adjustViewBounds="true"
    android:background="@drawable/icon_drawer"
    android:contentDescription="@string/app_name"
    />

編輯:

     btnMenu.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            drawer.openDrawer(Gravity.LEFT);                
        }
    });

我知道要關閉我必須調用drawer.closeDrawer(Gravity.LEFT); 但是我必須把這段代碼放在哪里?

獲取對DrawerLayout的引用並調用closeDrawer(int)關閉它並調用 openDrawer(int)打開它。 int參數指的是重力。 在您的情況下,它應該是GravityCompat.LEFT / GravityCompat.START ,因為根據您發布的屏幕截圖,您的DrawerLayout在左側打開和關閉。

關閉抽屜:

drawer.CloseDrawer((int)GravityFlags.Left);

打開抽屜:

drawer.OpenDrawer((int)GravityFlags.Left);

打開抽屜

DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.openDrawer(GravityCompat.START);

關閉抽屜

DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);

我可能會遲到,但這是您正在尋找的解決方案:

btnMenu.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
         if(drawer.isDrawerOpen(GravityCompat.START)){
                drawerLayout.closeDrawer(GravityCompat.START);
            }
            else {
                drawerLayout.openDrawer(GravityCompat.START);
            }                
    }
});

如果您正在使用滑動抽屜菜單,並且您想在菜單打開時隱藏它(從右向左拖動時)。 然后我們必須處理listview 對象ontouch 偵聽器。 代碼將是這樣的。

    //((( When we drage from Right to left then menu hide ))))
    lvMenu.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            switch (event.getAction()) 
            {
                case MotionEvent.ACTION_DOWN:
                    toggleMenu(v);                  
                    break;

                case MotionEvent.ACTION_UP:
                    //showtoast("up");
                    break;

                default:
                    return false;
            }
            return false;
        }


    });

     public void toggleMenu(View v) {
    mLayout.toggleMenu();
}

對於完整的代碼,你可以把評論放在這里,如果你有任何問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM