Intereting Posts

Слайд ExpandableListView в DrawerLayout форма справа налево

Как развернуть ExpandableListView в DrawerLayout с правой стороны налево

Я хочу показать ExpandableListView в правом углу экрана, как я могу это сделать?

<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"> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <ExpandableListView android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/white" android:dividerHeight="0dp" /> </android.support.v4.widget.DrawerLayout> 

Solutions Collecting From Web of "Слайд ExpandableListView в DrawerLayout форма справа налево"

Измените android:layout_gravity="start" на android:layout_gravity="end" или android:layout_gravity="right" (с помощью end поместите ящик в левой части экрана для конфигураций справа налево)

РЕДАКТИРОВАТЬ

Похоже, что ActionBarDrawerToggle ищет ящик с той же стороны, что и значок Gravity.START ( Gravity.START ), который будет левым для направлений макета слева направо. Если вы всегда будете иметь ящик справа, вы можете сделать что-то вроде этого:

 mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer, R.drawable.ic_drawer, R.string.open_drawer, R.string.close_drawer) { @Override public boolean onOptionsItemSelected(MenuItem item) { if (item != null && item.getItemId() == android.R.id.home) { if (mDrawer.isDrawerOpen(Gravity.RIGHT)) { mDrawer.closeDrawer(Gravity.RIGHT); } else { mDrawer.openDrawer(Gravity.RIGHT); } } return false; } }; 

Если ящик всегда будет находиться напротив значка «Главная», вы можете использовать Gravity.END вместо этого.

У меня такая же проблема, так как мое приложение является арабским и должно начинаться справа.

После тестирования всех решений здесь я обнаружил, что лучше всего:

  • Добавьте эту строку в манифест: android:supportsRtl="true"
  • В вашей активности добавьте этот код: getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
  • В вашем списке не используются: android:layout_gravity="right" потому что, если вы используете право, вы получите ошибку в других версиях Android, таких как 4.0.4

Решением является использование: android:layout_gravity="start" , потому что в этом случае listview следует за серьезностью страницы.

Это ошибка на домашней кнопке мыши в ActionBar, которая отображается в строке:

 if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } 

Удалите строки, о которых я упоминал, где у вас есть метод:

 @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } //.... } 

И замените его на:

 @Override public boolean onOptionsItemSelected(MenuItem item) { if (item != null && item.getItemId() == android.R.id.home) { if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) { mDrawerLayout.closeDrawer(Gravity.RIGHT); } else { mDrawerLayout.openDrawer(Gravity.RIGHT); } return true; } //... } 

Также не забудьте изменить гравитацию ListView вправо: android:layout_gravity="right"