Изменение направления панели навигации

В моем приложении есть навигационный ящик, который я изменил направление, чтобы открыть справа налево с помощью layoutdirection = "rtl", но, похоже, он испортил все содержимое навигационного ящика и каждый элемент, такой как вид и кнопки, и... переключился справа налево. Я имею в виду, что у меня есть кнопка где-то справа, но в симуляторе она кажется левой. Кто-нибудь сталкивался с этой проблемой раньше? Как это исправить?

Я также пробовал этот фрагмент кода, но не сработал

getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 

вы хотите перевернуть все приложение по горизонтали, чтобы поддерживать страны, которые читают и пишут справа налево, или просто хотите, чтобы ящик открывался справа, потому что вы просто предпочитаете именно так?

Nikos Hidalgo 10.04.2019 13:55

Вы хотите, чтобы меню навигации не действовало на RTL Switch?

pz64_ 10.04.2019 13:55
0
2
525
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

android:layout_gravity = "right"
Ответ принят как подходящий

1), если вы хотите использовать

getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

затем добавьте этот код в манифест

<application android:supportsRtl = "true">

2) еще один способ добиться этого...

your_layout.xml:

<android.support.v4.widget.DrawerLayout 
  android:id = "@+id/drawer_layout"
  tools:openDrawer = "end">

 <android.support.design.widget.NavigationView
  android:id = "@+id/nav_view"
  android:layout_gravity = "end" // here you can change direction
  />
</android.support.v4.widget.DrawerLayout>

YourActivity.java:

 @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 false;
}

Другие вопросы по теме