【问题标题】:Android overflow menu text not appearingAndroid溢出菜单文本未出现
【发布时间】:2021-02-07 08:25:21
【问题描述】:

我正在尝试将一个可检查的溢出菜单放入我的工具栏中。菜单与复选框一起呈现,但不显示文本。 Android Studio 按预期呈现菜单,但在我的 AVD 上没有。我已尝试更改菜单的文本颜色并使用操作布局。

[![菜单的预期渲染][1]][1]

[![菜单的实际渲染][2]][2]

menu_main.xml

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">

        <item
            android:id="@+id/tab_1"
            android:checkable="true"
            android:title="@string/tab_1"
            app:showAsAction="never|withText"
            android:actionLayout="@layout/action_layout"/>
        <item
            android:id="@+id/tab_2"
            android:checkable="true"
            android:title="@string/tab_2"
            android:visible="true"
            app:showAsAction="never|withText" />
        <item
            android:id="@+id/tab_3"
            android:checkable="true"
            android:title="@string/tab_3"
            android:visible="true"
            app:showAsAction="never|withText" />


</menu>

activity_main.kt


    lateinit var sectionsPagerAdapter: SectionsPagerAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        sectionsPagerAdapter = SectionsPagerAdapter(this, supportFragmentManager)
        val viewPager: ViewPager = findViewById(R.id.view_pager)
        viewPager.adapter = sectionsPagerAdapter
        val tabs: TabLayout = findViewById(R.id.tabs)
        tabs.setupWithViewPager(viewPager)
        val fab: FloatingActionButton = findViewById(R.id.fab)
        val toolBar: Toolbar = findViewById(R.id.tool_bar)
        setSupportActionBar(toolBar)
        toolBar.showOverflowMenu()


        var position: Int = 0

        class onTabSelectListen : TabLayout.OnTabSelectedListener{
            override fun onTabReselected(tab: TabLayout.Tab?) {
                if (tab != null) {
                    position = tab.position
                };
            }

            override fun onTabUnselected(tab: TabLayout.Tab?) {
                Log.d("","")
            }

            override fun onTabSelected(tab: TabLayout.Tab){
                position = tab.position;
            }
        }



        tabs.addOnTabSelectedListener(onTabSelectListen())

        fab.setOnClickListener { view ->
            Snackbar.make(view, "Reloading...", Snackbar.LENGTH_SHORT)
                    .setAction("Action", null).show()
            fab.animate()
                .setDuration(500)
                .rotationBy(-360f)
            reload()
        }


    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.menu_main,menu)
        return super.onCreateOptionsMenu(menu)
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {

        val itemId = item.itemId

        if (item.isChecked) {
            //TODO("UNCHECKD LOGIC")
            item.isChecked = false //Toggles checkbox state.
        } else {
            //TODO("CHECKED LOGIC")
            item.isChecked = true
        }
        return super.onOptionsItemSelected(item)
    }

    fun reload(){
        (sectionsPagerAdapter.getItem(sectionsPagerAdapter.GOOGLE_POSITION) as WebFragment).reloadWebView()
        (sectionsPagerAdapter.getItem(sectionsPagerAdapter.TWITTER_POSITION) as WebFragment).reloadWebView()
    }
}```


  [1]: https://i.stack.imgur.com/sEOFd.png
  [2]: https://i.stack.imgur.com/Jqjwb.png

【问题讨论】:

    标签: android xml android-studio kotlin


    【解决方案1】:

    尝试在 Item 中设置以下属性:

    android:showAsAction="ifRoom"
    

    代替:

    app:showAsAction="never|withText"
    

    【讨论】:

    • 文本显示,但这不是 UI 的意图。菜单项应位于溢出菜单中,而不是工具栏上的按钮。
    【解决方案2】:

    将其添加为&lt;toolbar&gt; 下的属性对我有用

    app:popupTheme="@style/Theme.Assignment1.PopupOverlay"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多