更改工具栏的字体和布局以使文本位于图标下方

问题描述

我有一个包含一些工具栏图标的片段,我的活动也是如此。它们应该都在那儿,所以打开片段时我不想清除菜单

这是我的活动:

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        super.onCreateOptionsMenu(menu)
        menuInflater.inflate(R.menu.my_menu,menu)
        return true
    }

override fun onoptionsItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            android.R.id.home -> navController.navigateUp()
            R.id.action_one -> onActionOne()
            R.id.action_two -> onActionTwo()
        }

        return super.onoptionsItemSelected(item)
    }

这是我的片段

override fun onCreateOptionsMenu(menu: Menu,inflater: MenuInflater) {
          menuItems.forEach { menuItemData ->
            menu.add(
                0,menuItemData.id,Menu.NONE,requireContext().applyTypeFace(
                    this.getString(menuItemData.title),R.string.some_font
                )
            ).apply {
                setActionView(menuItemData.layoutRes)
                icon = getDrawable(context,menuItemData.iconRes)
                setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
            }
        }
        return super.onCreateOptionsMenu(menu,inflater)
    }

override fun onoptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            android.R.id.home -> {
                findNavController().navigateUp()
                true
            }
            else -> super.onoptionsItemSelected(item)
        }
    }

menuItems是此类的列表

enum class ToolbarMenuItem(
    @IdRes val id: Int,@StringRes val title: Int,@DrawableRes val iconRes: Int,@LayoutRes val layoutRes: Int
) 

我基本上是通过这种方式而不是XML来执行此操作,以获取文本上正确的字体和颜色。

如果没有以下代码行,这一切都可以很好地工作:

setActionView(menuItemData.layoutRes)

我希望我的自定义设计位于图标所在的位置,然后是图标下方的相应文本。

当我使用setActionView时,它根本不响应任何单击事件。 希望有人知道我错了!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)