Как установить значок Layer Layout в правой части экрана устройства?

Я создал приложение образца макета ящика, он работает отлично, моя проблема заключается в том, что макет ящика работает справа налево, но я пытаюсь переместить значок слева направо вправо, но он не работает, дайте мне ваше предложение .. !!! Это возможно или нет?

Введите описание изображения здесь

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="right" > <!-- The main content view --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- The navigation drawer --> <ListView android:id="@+id/drawer_list" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="right" android:background="#111" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" /> </android.support.v4.widget.DrawerLayout> 

Solutions Collecting From Web of "Как установить значок Layer Layout в правой части экрана устройства?"

Этот значок представляет меню навигации, которое по дизайну должно быть в левой части экрана. В соответствии с рекомендациями мы можем иметь навигационный ящик с правой стороны, но это должно использоваться для изменения содержимого (например, фильтров). Для всех таких целей вы можете использовать ActionbarItem и установить ActionItem в правом углу экрана. Нажмите на этот элемент действия, чтобы открыть или закрыть правый навигационный ящик.

Но наверняка, согласно дизайну, этот анимированный трехслойный значок меню, представляющий навигацию, должен быть слева.

Для информации, чтобы поместить навигационный ящик с правой стороны, вы должны изменить гравитацию навигационного ящика следующим образом:

  <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/main_background" > <!-- The main content view --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> <!-- The navigation drawer --> <LinearLayout android:id="@+id/right_drawer" android:layout_width="280dp" android:layout_gravity="end" android:layout_height="match_parent" android:orientation="vertical" /> </android.support.v4.widget.DrawerLayout> 

Кроме того, в этом случае вы действительно действительно хотите значок меню навигации, справа либо используйте собственные макеты заголовков, либо библиотеку, например ActionBarSherlock, для ее редактирования.

Надеюсь, это поможет!

Возможно, слишком поздно, но вы можете решить это, используя меню по умолчанию.

Создать res/menu/my_right_side_menu.xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:myapp="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/btnMyMenu" android:icon="@drawable/ic_drawer" android:title="Right Side Menu" myapp:showAsAction="always"/> </menu> 

Затем добавьте свое меню в onCreateOptionsMenu() в своей Activity

 @Override public boolean onCreateOptionsMenu(Menu menu) { int menuToUse = R.menu.my_right_side_menu; MenuInflater inflater = getMenuInflater(); inflater.inflate(menuToUse, menu); return super.onCreateOptionsMenu(menu); } 

Затем в ActionBarDrawerToggle обрабатывается событие click вашего пункта меню

 mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { @Override public boolean onOptionsItemSelected(android.view.MenuItem item) { if (item != null && item.getItemId() == R.id.btnMyMenu) { if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) { mDrawerLayout.closeDrawer(Gravity.RIGHT); } else { mDrawerLayout.openDrawer(Gravity.RIGHT); } return true; } return false; } }; 

И, наконец, не забудьте скрыть свою кнопку «Домой» с ActionBar

 getSupportActionBar().setDisplayHomeAsUpEnabled(false); getSupportActionBar().setDisplayShowHomeEnabled(false); 

Если вы используете AppBarLayout и панель инструментов, выполните следующие действия:

 <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay" android:layoutDirection="rtl"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> 

Note: android: layoutDirection = "rtl"

У вас есть два варианта, если вы не хотите иметь панель инструментов или не нуждаетесь в панели инструментов, как в моем случае, есть простой вариант просто добавить ImageButton в правый угол вашей деятельности, как это

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="right" > <!-- The main content view --> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <ImageButton android:id="@+id/account_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:padding="15dp" android:background="@null" android:src="@drawable/ic_menu_white_24dp" /> </RelativeLayout> <!-- The navigation drawer --> <ListView android:id="@+id/drawer_list" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="right" android:background="#111" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" /> 

А затем просто добавьте слушатель на него и используйте drawerLayout.isDrawerOpen () для проверки текущего состояния ящика в нормальном состоянии if, затем открытие и закрытие ящика. Использование drawerLayout.openDrawer ( ) и drawerLayout.closeDrawer (); И для каждого из методов, которые вы можете передать, будет ли гравитация или drawerView в вашем случае ListView, поэтому это должно быть что-то вроде этого drawer_layout.isDrawerOpen (drawer_list);

Вот такое лазееподобное решение, которое работало в моем случае.

 toggle = new ActionBarDrawerToggle( this, drawer, toolbar0, R.string.open_nav, R.string.close_nav); 

Я создал для него панель инструментов.

 <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_marginRight="40dp" android:layout_marginEnd="40dp" android:background="@color/colorPrimary"> <!-- this is your general toolbar--> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="right|end|center_vertical" android:text="Mytitle"/> </android.support.v7.widget.Toolbar> <android.support.v7.widget.Toolbar android:id="@+id/toolbar0" android:layout_width="40dp" android:layout_height="?attr/actionBarSize" android:layout_gravity="right|end" android:background="?attr/colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <!-- this is your nav-button toolbar--> </FrameLayout> </android.support.design.widget.AppBarLayout> 

И установите onclicklistener для него:

 toolbar0.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (drawer.isDrawerOpen(Gravity.RIGHT)) { drawer.closeDrawer(Gravity.RIGHT); } else { drawer.openDrawer(Gravity.RIGHT); } } }); 

Из руководства разработчика :

Позиционирование и расположение ящика контролируется с помощью атрибута android: layout_gravity для дочерних видов, соответствующих той стороне представления, которую вы хотите, чтобы ящик выходил из: влево или вправо. (Или начало / конец на версиях платформы, поддерживающих направление макета).

Это означает, что вы можете это сделать:

 <DrawerLayout android:layout_gravity="right"> </DrawerLayout> 

редактировать

Согласно « Создание ящика навигации» ,

Вид ящика (ListView) должен определять его горизонтальную гравитацию с помощью атрибута android: layout_gravity. Чтобы поддерживать языки справа налево (RTL), укажите значение с «start» вместо «left» (поэтому ящик появляется справа, когда макет RTL).

Итак, вы должны сделать:

 <DrawerLayout android:layout_gravity="start"> </DrawerLayout>