http://developer.Android.com/training/implementing-navigation/nav-drawer.html
Laut diesem Dokument heißt es nicht, ob es möglich ist, die Schublade von der rechten Seite aus zu implementieren. Ist es überhaupt möglich? :(
Hier ist die Dokumentation zur Schublade und es scheint, dass Sie sie so konfigurieren können, dass sie von links oder rechts herausgezogen wird.
Die Positionierung und Anordnung der Schubladen wird mit .__ gesteuert. Android: layout_gravity-Attribut für untergeordnete Ansichten, denen .__ entspricht. Seite der Ansicht, aus der die Schublade hervorgehen soll: links oder rechts . (Oder bei Plattformversionen, die die Layoutrichtung unterstützen, starten/enden.)
http://developer.Android.com/reference/Android/support/v4/widget/DrawerLayout.html
Der NavigationDrawer kann so konfiguriert werden, dass er von links, rechts oder von beiden herausgezogen wird. Der Schlüssel ist die Reihenfolge der Darstellung der Schubladen in der XML-Deklaration und das Attribut layout_gravity. Hier ist ein Beispiel:
<Android.support.v4.widget.DrawerLayout
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<FrameLayout
Android:id="@+id/content"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:baselineAligned="false" >
</FrameLayout>
<!-- Left drawer -->
<ListView
Android:id="@+id/left_drawer"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="left"
Android:choiceMode="singleChoice" />
<!-- Right drawer -->
<ListView
Android:id="@+id/right_drawer"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="right"
Android:choiceMode="singleChoice" />
</Android.support.v4.widget.DrawerLayout>
Meine App stürzte mit der Fehlermeldung "Keine Schubladenansicht mit Schwerkraft LINKS gefunden" ab.
Also fügte ich dies zu onOptionsItemSelected hinzu:
if (item != null && item.getItemId() == Android.R.id.home) {
if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) {
mDrawerLayout.closeDrawer(Gravity.RIGHT);
} else {
mDrawerLayout.openDrawer(Gravity.RIGHT);
}
}
Hinzufügen zu https://stackoverflow.com/a/21781710/437039 solution.
Wenn Sie ein von Android Studio erstelltes Navigation Drawer-Projekt verwenden, ändert sich dies in onOptionsItemSelected
. Da sie die untergeordnete Klasse erstellt haben, müssen Sie diesen Code verwenden
if (item != null && id == Android.R.id.home) {
if (mNavigationDrawerFragment.isDrawerOpen(Gravity.RIGHT)) {
mNavigationDrawerFragment.closeDrawer(Gravity.RIGHT);
} else {
mNavigationDrawerFragment.openDrawer(Gravity.RIGHT);
}
return true;
}
Nächster. In der Klasse NavigationDrawerFragment
müssen Sie 3 Methoden erstellen:
Methode 1
public boolean isDrawerOpen(int gravity) {
return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(gravity);
}
Methode 2
public void closeDrawer(int gravity) {
mDrawerLayout.closeDrawer(gravity);
}
Methode 3
public void openDrawer(int gravity) {
mDrawerLayout.openDrawer(gravity);
}
Nur jetzt funktioniert die rechte Schublade.
Sie können NavigationView
im Materialdesign verwenden. Für ex:
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.DrawerLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
<Android.support.design.widget.NavigationView
Android:id="@+id/nav_view"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="end"
Android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</Android.support.v4.widget.DrawerLayout>
Für eine vollständige Anleitung siehe http://v4all123.blogspot.in/2016/03/simple-example-of-navigation-view-on.html
Ich weiß, dass dies eine alte Frage ist, aber für diejenigen, die noch nach der Antwort suchen:
Ja, es ist möglich. Bitte überprüfen Sie meine Antwort unter folgendem Link:
Dann verwenden Sie diese Codes @amal Ich denke, das wird Ihnen helfen .. _. XML:
<!-- Framelayout to display Fragments -->
<FrameLayout
Android:id="@+id/frame_container"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="48dp"
Android:background="@drawable/counter_bg" >
<ImageView
Android:id="@+id/iconl"
Android:layout_width="25dp"
Android:layout_height="wrap_content"
Android:layout_gravity="left"
Android:layout_marginLeft="12dp"
Android:layout_marginRight="12dp"
Android:src="@drawable/ic_launcher" />
<ImageView
Android:id="@+id/iconr"
Android:layout_width="25dp"
Android:layout_height="wrap_content"
Android:layout_alignParentRight="true"
Android:layout_alignParentTop="true"
Android:layout_marginRight="17dp"
Android:src="@drawable/ic_launcher" />
</RelativeLayout>
</FrameLayout>
<!-- Listview to display slider menu -->
<ListView
Android:id="@+id/list_slidermenu"
Android:layout_width="240dp"
Android:layout_height="match_parent"
Android:layout_gravity="start"
Android:background="@color/list_background"
Android:choiceMode="singleChoice"
Android:divider="@color/list_divider"
Android:dividerHeight="1dp"
Android:listSelector="@drawable/list_selector" />
<ListView
Android:id="@+id/list_slidermenu2"
Android:layout_width="240dp"
Android:layout_height="match_parent"
Android:layout_gravity="end"
Android:background="@color/list_background"
Android:choiceMode="singleChoice"
Android:divider="@color/list_divider"
Android:dividerHeight="1dp"
Android:listSelector="@drawable/list_selector" />
// Stellen Sie die erforderlichen Bilder ein
Aktivitätscode:
ImageView iconl,iconr;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList,mDrawerList2;
ImageView iconl,iconr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iconl = (ImageView)findViewById(R.id.iconl);
iconr = (ImageView)findViewById(R.id.iconr);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
mDrawerList2 = (ListView) findViewById(R.id.list_slidermenu2);
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
mDrawerList2.setOnItemClickListener(new SlideMenuClickListener());
iconl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mDrawerLayout.openDrawer(Gravity.START);
mDrawerLayout.closeDrawer(Gravity.END);
}
});
iconr.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mDrawerLayout.openDrawer(Gravity.END);
mDrawerLayout.closeDrawer(Gravity.START);
}
});
}
}
und hier können Sie Ihren eigenen Listenadapter für beide Listen und für Elementklickaufruf anzeigen (Position) festlegen. Methode, wo Sie Ihr Fragment zu Framelayout hinzufügen können.
/**
* Diplaying fragment view for selected nav drawer list item
* */
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
default:
break;
}
if (fragment != null)
{
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
Um die Navigationsleiste von der rechten Seite des Bildschirms aus einzustellen, machen Sie das Schubladenlayout der Navigationsansicht übergeordnet, und legen Sie das Layout der Navigationsansicht nach rechts fest.