android - 操作栏中的选项菜单显示选项太高
问题描述
我希望单击垂直三个点后弹出的菜单显示从操作栏下方开始的菜单,而不是如图所示与其对齐。我怎样才能做到这一点?
默认选项菜单:
选项菜单的预期定位:
这是我在活动中的代码:
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>
解决方案
像这样使用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>
输出看起来完全符合您的要求:
推荐阅读
- android - 活动以某种方式起作用但不可见
- kubernetes - Kubernetes - 如何计算每个容器所需的资源?
- c - 为什么这个函数是非法的?
- google-cloud-platform - Cloud Endpoint 和 API Gateway (GCP) 是否支持 Websocket?
- docker - dockerfile 中缺少文件以及运行 docker 脚本时出现问题
- android - EditText 提示和文本的不同字体系列
- ios - 如何将 URLSession 委托与自定义类一起使用
- bash - 将句子分成单独的行
- javascript - 有没有一种简单的方法可以将 LaTeX(MathLive 输出)转换为 TypeScript/JavaScript 或 Java 中的 Excel 单元格公式?
- html - 在css中闪烁背景图像