首页 > 解决方案 > 具有自定义重力选项的导航组件工具栏

问题描述

我正在尝试为两个不同的片段设置两个不同的工具栏标题...其中一个需要与工具栏的底部对齐,具有较大的 minHeight,另一个必须保持默认的垂直中心值,就像在带有导航组件的默认工具栏中。

很容易实现 2 个不同minHeight的 s,但由于某种原因,我无法自定义文本的重力。

1-) 尝试了注释掉的行???

2-) 尝试提供具有 2 种不同样式的自定义重力场,如下面的第二个块所示

3-) 在 Toolbar 中提供自定义 TextView 如何工作?它不会替换现有的导航组件配置。这不起作用AFAIK。

.

.

1-)


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setSupportActionBar(findViewById(R.id.toolbar_main))

        setupBottomNavigationBar()
    }

    private fun setupBottomNavigationBar() {
        val navGraphIds = listOf(R.navigation.bla, R.navigation.blabla)

        val controller = binding.bottomNav.setupWithNavController(
            navGraphIds, supportFragmentManager, R.id.nav_host_container, intent
        )

        controller.observe(
            this,
            Observer { navController ->
                setupActionBarWithNavController(navController)
                when (navController.graph.id) {
                    R.id.more -> {
                        binding.toolbarMain.minimumHeight = TypedValue.applyDimension(
                            TypedValue.COMPLEX_UNIT_DIP,
                            ResourcesCompat.getFloat(resources, R.dimen.min_height),
                            resources.displayMetrics
                        ).toInt()
                        binding.toolbarMain.setTitleTextAppearance(this, R.style.ToolbarBig)
                       
//                        (binding.toolbarMain.gravity = ????
                    }
                    else -> {
                        binding.toolbarMain.setTitleTextAppearance(this, R.style.ToolbarNormal)
                        binding.toolbarMain.minimumHeight = 0
                    }
                }
            }
        )

        currentNavController = controller
    }
    

2-)

    <style name="ToolbarNormal" parent="ParentToolbar0">
        <!--        <item name="android:buttonGravity">center_vertical</item>-->
        <!--        <item name="android:gravity">center_vertical</item>-->
        <item name="android:foregroundGravity">center_vertical</item>
    </style>

    <style name="ToolbarBig" parent="ParentToolbar0">
        <item name="android:gravity">bottom</item>
        <item name="android:buttonGravity">bottom</item>
        <item name="android:foregroundGravity">bottom</item>
        <item name="android:layout_gravity">bottom</item>
        <item name="android:titleMarginBottom">-300dp</item>
    </style>

</resources>

任何帮助实现大型工具栏的底部对齐将不胜感激。

标签: android

解决方案


推荐阅读