Удалить переполнение меню 3 точки в фрагменте - PullRequest
3 голосов
/ 19 марта 2020

У меня есть фрагмент, который должен иметь пользовательское меню. Ниже приведен код, который добавлен к моему фрагменту.

    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>

Я хочу, чтобы этот значок поиска присутствовал только на панели инструментов. Что происходит, так это добавление переполнения меню тоже. Как удалить переполненное меню?

ОБНОВЛЕНИЕ: Эта проблема возникает только на мобильных устройствах. В эмуляторах планшетов его не видно.

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Прежде всего удалите функции переопределения накачки меню из активности контейнера фрагмента.

Класс фрагмента:

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), тогда значок меню скрывается на панели инструментов.
1 голос
/ 23 марта 2020

Это работало, когда я звонил по-разному.

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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...