So zeigen/verbergen Sie die Navigationsleiste programmgesteuert

Lesezeit: 3 Minuten

Benutzer-Avatar
Sonne

Wie kann ich die Schaltfläche zum Ein-/Ausblenden der Navigationsleiste verwenden? Ich habe diesen SO-Link verwendet, um die Navigationsleiste zu erstellen und zu verwalten.

Jetzt verwende ich (Swipe von links nach rechts – zum Anzeigen) und (Swipe von rechts nach links – zum Ausblenden)

Wie kann ich die Schublade mit der im folgenden Screenshot hervorgehobenen Schaltfläche anzeigen / ausblenden:

Geben Sie hier die Bildbeschreibung ein

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"
    />

Bearbeitet:

     btnMenu.setOnClickListener(new OnClickListener() {

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

Ich weiß, um zu schließen, muss ich anrufen drawer.closeDrawer(Gravity.LEFT); aber wo muss ich diesen code einfügen?

Benutzer-Avatar
Schwarzer Gürtel

Holen Sie sich einen Verweis auf die DrawerLayout und Ruf an Schublade schließen (int) zu schließen und openDrawer(int) um es zu öffnen. Das int Parameter bezieht sich auf die Schwerkraft. In deinem Fall sollte es so sein GravityCompat.LEFT/ GravityCompat.STARTdenn entsprechend dem Screenshot, den Sie gepostet haben, ist Ihre DrawerLayout links öffnen und schließen.

  • Danke, dein Trick hat bei mir funktioniert, aber ich weiß immer noch nicht, wo ich den Code zum Schließen der Schublade platzieren soll, überprüfe meinen bearbeiteten Code

    – Sonne

    15. September 2015 um 10:19 Uhr

  • Verwenden Sie dieselbe Schaltfläche. if (drawer.isDrawerOpen(Gravity.LEFT)) { // close } else {// open }

    – Schwarzer Gürtel

    15. September 2015 um 10:21 Uhr

  • Um die Navigationsleiste zu schließen, rufen Sie einfach drawerLayout.closeDrawers() auf.

    – Vadiraj Purohit

    24. August 2016 um 22:19 Uhr

  • erwägen zu verwenden Gravity.START um unterschiedliche Layoutrichtungen zu unterstützen

    – Amr Säbel

    9. August 2018 um 13:41 Uhr

  • Wenn Sie START oder END für die Schwerkraft verwenden, möchten Sie vielleicht GravityCompat verwenden

    – Anzeigen

    13. September 2019 um 0:53 Uhr

Benutzer-Avatar
Yaniv Maymon

Schublade schließen:

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

Schublade öffnen:

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

Um die Schublade zu öffnen

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

Zum Schließen der Schublade

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

Ich bin vielleicht spät dran, aber hier ist die Lösung, nach der Sie suchen:

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);
            }                
    }
});

Wenn Sie das Sliding Drawer Menu verwenden und das Menü ausblenden möchten, wenn es geöffnet ist (beim Ziehen von rechts nach links). Dann müssen wir uns mit dem Listview-Objekt ontouch listener befassen. Der Code wird so sein.

    //((( 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();
}

Für den vollständigen Code können Sie den Kommentar hier einfügen, wenn Sie ein Problem haben

1137170cookie-checkSo zeigen/verbergen Sie die Navigationsleiste programmgesteuert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy