首页 > 解决方案 > 操作栏中的选项菜单显示选项太高

问题描述

我希望单击垂直三个点后弹出的菜单显示从操作栏下方开始的菜单,而不是如图所示与其对齐。我怎样才能做到这一点?

默认选项菜单:

在此处输入图像描述

选项菜单的预期定位:

在此处输入图像描述

这是我在活动中的代码:

    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>

标签: androidandroid-studioandroid-layoutkotlin

解决方案


像这样使用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>

输出看起来完全符合您的要求:

在此处输入图像描述


推荐阅读