如何使RTL appBarConfiguration androidx.navigation?

问题描述 投票:0回答:1

我想使RTL为appBarConfiguration。这是我的MainActivity代码。有什么方法可以帮助我在不使用自定义工具栏或进行一些自定义操作的情况下执行此操作?我搜索发现这是android文档:[navigation-ui] [1]但是如果有类似的东西,我会寻找一些简单的东西,例如布局方向]

MainActivity类:


    private lateinit var drawerLayout: DrawerLayout
    private lateinit var appBarConfiguration: AppBarConfiguration

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val binding =
            DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
        drawerLayout = binding.drawerLayout

        val navController = this.findNavController(R.id.navHostFragment)
        appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)
        NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)

        navController.addOnDestinationChangedListener { nc: NavController, nd: NavDestination, _: Bundle? ->
            if (nd.id == nc.graph.startDestination) {
                drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
            } else {
                drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
            }
        }

        NavigationUI.setupWithNavController(binding.navView, navController)
    }



    override fun onSupportNavigateUp(): Boolean {
        val navigationController = findNavController(R.id.navHostFragment)
        return navigationController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
    }


    override fun onBackPressed() {
        if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
            drawerLayout.closeDrawer(GravityCompat.START)
        } else {
            return super.onBackPressed()
        }
    }
}

以及此处的activity_main.xml:

<layout xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>

    </data>

<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layoutDirection="rtl"
    tools:openDrawer="start"
    tools:context=".MainActivity">

    <fragment
        android:id="@+id/navHostFragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/navigation"/>


    <com.google.android.material.navigation.NavigationView
        android:id="@+id/navView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/drawer_menu"
        app:headerLayout="@layout/fragment_cart"
        />



</androidx.drawerlayout.widget.DrawerLayout>
</layout>```

[![now it's look like this:][2]][2]

I wanna hamberger menu place in right and that three icon place in left


  [1]: https://developer.android.com/guide/navigation/navigation-ui#kotlin
  [2]: https://i.stack.imgur.com/eOur8.png

我想使RTL为appBarConfiguration。这是我的MainActivity代码。有什么方法可以帮助我在不使用自定义工具栏或进行一些自定义操作的情况下执行此操作?我搜索发现这是...

android navigation fragment android-appbarlayout
1个回答
0
投票

我可以通过在activity_main.xml和MainActivity.kt中添加此部分来解决此问题

© www.soinside.com 2019 - 2024. All rights reserved.