http://developer.android.com/training/implementing-navigation/nav-drawer.html
De acuerdo con este documento, no dice si es posible implementar el cajón desde el lado derecho. ¿Es posible? 🙁
Aquí está la documentación en el cajón y parece que puede configurarlo para que se abra desde la izquierda o la derecha.
La colocación y el diseño del cajón se controlan mediante el atributo android: layout_gravity en las vistas secundarias correspondientes a qué lado de la vista desea que aparezca el cajón: a la izquierda o a la derecha. (O inicio / final en las versiones de plataforma que admiten la dirección de diseño).
http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html
El NavigationDrawer se puede configurar para que se abra desde la izquierda, la derecha o ambas cosas. La clave es el orden de aparición de los cajones en la statement XML y el atributo layout_gravity. Aquí hay un ejemplo:
Mi aplicación se bloqueó con el error “No se encontró la vista del cajón con gravedad IZQUIERDA”.
Así que agregué esto al onOptionsItemSelected:
if (item != null && item.getItemId() == android.R.id.home) { if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) { mDrawerLayout.closeDrawer(Gravity.RIGHT); } else { mDrawerLayout.openDrawer(Gravity.RIGHT); } }
Para agregar a https://stackoverflow.com/a/21781710/437039 solución.
Si está utilizando un proyecto de Cajón de navegación creado por Android Studio, las cosas cambiarán en onOptionsItemSelected
. Desde que crearon la clase para niños, debes usar este código
if (item != null && id == android.R.id.home) { if (mNavigationDrawerFragment.isDrawerOpen(Gravity.RIGHT)) { mNavigationDrawerFragment.closeDrawer(Gravity.RIGHT); } else { mNavigationDrawerFragment.openDrawer(Gravity.RIGHT); } return true; }
Siguiente. En la clase NavigationDrawerFragment
, debes crear 3 métodos:
Método 1
public boolean isDrawerOpen(int gravity) { return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(gravity); }
Método 2
public void closeDrawer(int gravity) { mDrawerLayout.closeDrawer(gravity); }
Método 3
public void openDrawer(int gravity) { mDrawerLayout.openDrawer(gravity); }
Solo ahora, el cajón del lado derecho funcionará.
Puede usar NavigationView
desde el diseño del material. Por ejemplo:
Para obtener un tutorial completo, consulte http://v4all123.blogspot.in/2016/03/simple-example-of-navigation-view-on.html
Sé que esta es una vieja pregunta, pero para aquellos que todavía están buscando la respuesta:
Sí, es posible. Por favor revisa mi respuesta en el siguiente enlace:
Entonces usa estos códigos @amal, creo que esto te ayudará. XML:
// establece las imágenes requeridas
Código de actividad:
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); } }); } }
y aquí puede configurar su propio adaptador de lista para ambas listas y al hacer clic en el elemento visualizarVista (posición); método donde puedes agregar tu fragmento a framelayout.
/** * 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"); } }
Para establecer el cajón de navegación desde la derecha de la pantalla, convierta el diseño del cajón en el principal de la vista de navegación y configure la gravedad del diseño de la vista de navegación a la derecha.