Меню опций на панели действий Отображает опцию слишком высоко - PullRequest
0 голосов
/ 08 октября 2019

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

Меню параметров по умолчанию:

enter image description here

Ожидаемое расположение меню параметров:

enter image description here

Вот мой код в упражнении:

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

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // Handle presses on the action bar menu items
        when (item.itemId) {
            R.id.logoutButton -> {
                logoutClick()
                return true
            }
            else -> {
                return super.onOptionsItemSelected(item)
            }
        }
    }

Код в макете:

<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="com.example.treechat.ChannelListActivity">

    <item
        android:id="@+id/logoutButton"
        android:title="Logout"
        app:showAsAction="collapseActionView"/>

    <item
        android:id="@+id/item2"
        android:title="Item 2"
        app:showAsAction="collapseActionView"/>
</menu>

1 Ответ

2 голосов
/ 08 октября 2019

Используйте actionOverflowMenuStyle и поместите пользовательский стиль в AppTheme в styles.xml, например, таким образом вы повернете overlapAnchor на false и установите для него смещение:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="actionOverflowMenuStyle">@style/OptionsMenuCustomStyle</item>
</style>

<style name="OptionsMenuCustomStyle" parent="Widget.AppCompat.PopupMenu.Overflow">
    <item name="overlapAnchor">false</item>
    <item name="android:overlapAnchor" tools:ignore="NewApi">false</item>
    <item name="android:dropDownVerticalOffset">4.0dip</item>
</style>

Выход будет выглядеть в точности как ваше требование:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...