删除溢出菜单中的三个点

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

我有一个片段,需要一个自定义菜单。下面是添加到我的片段中的代码。

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setHasOptionsMenu(true)
    }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        inflater.inflate(R.menu.actionbar_menu, menu)
        super.onCreateOptionsMenu(menu, inflater)
    }

我的actionbar_menu如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/search"
        android:icon="@drawable/search"
        android:title="Search"
        app:showAsAction="always"
        tools:ignore="AlwaysShowAction" />
</menu>

我只希望此搜索图标出现在工具栏中。发生的事情也是它的添加溢出菜单。如何删除溢出菜单?

UPDATE:我仅在手机上遇到此问题。在平板电脑模拟器中未显示。

android kotlin fragment android-toolbar
2个回答
0
投票

当我以不同的方式拨打相同电话时,它起作用。

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    setHasOptionsMenu(true)
}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    menu.clear()
    inflater.inflate(R.menu.actionbar_menu, menu)
}

0
投票

首先,删除菜单会从片段容器活动中填充替代功能。

片段类:

override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    setHasOptionsMenu(false)         // Show/Hide Icon
    return inflater.inflate(R.layout.fragment_first, container, false)
}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    inflater.inflate(R.menu.menu_main, menu)    // Give your desire menu.xml
}

此功能可以显示/隐藏溢出菜单图标setHasOptionsMenu()

  • 如果使用setHasOptionsMenu(true),则菜单图标将显示在工具栏上。
  • 否则setHasOptionsMenu(false),然后菜单图标将隐藏在工具栏上。
© www.soinside.com 2019 - 2024. All rights reserved.