Zunächst einmal weiß ich, dass diese Frage hier schon einmal aufgetaucht ist, aber nachdem ich viel versucht habe, war ich immer noch nicht erfolgreich. Ich arbeite an dem Beispiel von der Android Developers Site .
Ich versuche, das Menü so einzustellen, dass es von rechts nach links geöffnet wird, anstatt wie es im Beispiel implementiert wird (von links nach rechts). Außerdem möchte ich die Schaltfläche zum Öffnen des Menüs auf die rechte Seite der Aktionsleiste verschieben. Ich habe hier auch einige Antworten rot, zum Beispiel in dieser Antwort .
Ich versuche, die Schwerkraft der Ansichten und Layouts zu ändern, erhalte jedoch den Fehler:
Keine Schubladenansicht mit absoluter Schwerkraft LINKS gefunden
Können Sie mir bitte helfen, herauszufinden, wo das Problem in meinem Code liegt und was ich ändern muss, um das Menü von rechts zu öffnen und die Schaltfläche in der Aktionsleiste nach rechts zu verschieben?
Der XML-Code ist hier:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_gravity="right"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/content_frame"
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<ListView android:id="@+id/left_drawer"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="right"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="10dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
Antworten:
Stellen Sie in Ihrem
ListView
Hauptlayout Ihre Schwerkraft auf rechts:Auch in Ihrem Code:
hoffe, es funktioniert :)
quelle
setCustomView
Methode? Wenn ja, würde es Ihnen etwas ausmachen, einige Links einzufügen, die zeigen, wie das geht?Fügen Sie diesen Code zum Manifest hinzu:
und schreiben Sie dann diesen Code auf Oncreate:
Für mich geht das. ;)
quelle
LÖSUNG
your_layout.xml:
YourActivity.java:
quelle
toolbar.setNavigationOnClickListener
erfordert min Api Level 21 :(From August 2018, new apps must target at least Android 8.0 (API level 26). From November 2018, app updates must target Android 8.0 (API level 26).
(Google)Diese Antwort ist nützlich, um die Navigation von rechts nach links zu öffnen, aber es gibt keine Lösung, das Symbol auf die rechte Seite zu setzen. Dieser Code kann das Problem beheben. Wenn Sie es
drawer
als ersten undViewCompat.LAYOUT_DIRECTION_RTL
als zweiten Parameter angeben, wird das gesamte Layout auf RTL gesetzt. Es ist eine schnelle und einfache Lösung, aber ich denke nicht, dass es eine richtige Lösung für diejenigen sein kann, die nur festlegen möchten, dass das Menü von rechts nach links geöffnet wird und das Symbol auf der rechten Seite angezeigt wird. (Obwohl es von Ihrem Zweck abhängt.) Ich schlage jedoch vor, dastoolbar
anstelle des zu gebendrawer
. Auf diese Weise wurde nur die Symbolleiste zu RTL. Ich denke, die Kombination dieser beiden Antworten kann genau das tun, was Sie wollen.Nach diesen Beschreibungen sollte Ihr Code folgendermaßen aussehen:
(Fügen Sie diese Zeilen zur onCreate-Methode hinzu.)
Beachten Sie, dass Sie die Schublade endgültig machen sollten, sonst wird folgende Fehlermeldung angezeigt:
Und vergessen Sie nicht,
end
anstelle vonstart
inonNavigationItemSelected
Methode zu verwenden:und in Ihrer activity_main.xml
quelle
Hier ist die Dokumentation zur Schublade, und Sie können sie anscheinend so konfigurieren, dass sie von links oder rechts herausgezogen werden kann.
http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html
quelle
end
stattright
in der Schwerkraft. EDIT: Entfernen Sieandroid:layout_gravity="right"
aus demandroid.support...DrawerLayout
und wechseln Sieandroid:layout_gravity="right"
nachandroid:layout_gravity="end"
innenListView
Schauen Sie sich das an: Schieben Sie ExpandableListView im DrawerLayout-Formular von rechts nach links
Ich gehe davon aus, dass Sie ActionBarDrawerToggle implementiert haben. Der Trick besteht darin, die
onOptionsItemSelected(MenuItem item)
Methode im ActionBarDrawerToggle-Objekt folgendermaßen zu überschreiben :Stellen Sie sicher und rufen Sie dies
onOptionsItemSelected(MenuItem item)
in der Aktivität auf:Auf diese Weise können Sie die Home-Button-Funktion verwenden. Um die Schaltfläche auf die rechte Seite der Aktionsleiste zu verschieben, müssen Sie ein benutzerdefiniertes Aktionselement und möglicherweise einige andere Elemente implementieren, damit es wie gewünscht funktioniert.
quelle
das Hauptproblem mit dem folgenden Fehler:
Keine Schubladenansicht mit absoluter Schwerkraft LINKS gefunden
ist das, du hast das definiert
für die Listenansicht rechts, aber versuchen Sie, die Schublade von links zu öffnen, indem Sie diese Funktion aufrufen:
und klicken Sie auf das Hamburger-Symbol!
Kommentieren Sie einfach die obige Funktion und versuchen Sie, das Öffnen / Schließen des Menüs zu handhaben, wie @Rudi sagte!
quelle
Ich habe dieses Problem gelöst, indem ich die Schwerkraft der Navigationsansicht geändert habe
zu beenden statt zu beginnen
Es hat bei mir funktioniert.
quelle
Sie sollten diesen Code zunächst in Ihre AppManifest.xml im Anwendungs-Tag einfügen:
Fügen Sie dann in Ihre Datei activity_main.xml diesen Code ein:
quelle
Ich habe die folgenden Änderungen am Beispiel für die Navigation Drawer-Aktivität in Android Studio vorgenommen. Mit Unterstützungsbibliotheken 25.3.1.
MainActivity.java:
main.xml (download ic_menu_white_24px von https://material.io/icons/ ):
In activity_main.xml ändern
zu
quelle
Das Öffnen über RTL ist nicht gut für die Benutzererfahrung. Um auf das Gebietsschema des Benutzers zu reagieren, habe ich meinen DrawerLayout-Parametern die folgende Zeile hinzugefügt:
Es wurde meinem AppBarLayout hinzugefügt, damit das Hamburger-Layout auch der Öffnungsrichtung der Schublade entspricht.
quelle
DrawerLayout- Eigenschaften
android:layout_gravity="right|end"
undtools:openDrawer="end"
NavigationView- Eigenschaftandroid:layout_gravity="end"
XML Layout
Java Code
quelle