android - 弹出菜单很奇怪
问题描述
我menu
在操作栏上创建了一个图标。当它被点击时,我希望它会显示这样的东西
但它显示在左侧。
这个问题可能是什么?
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
inflater!!.inflate(R.menu.fragment_menu, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val id = item.getItemId()
if (id == R.id.more) {
var popup: PopupMenu? = PopupMenu(context!!, view!!)
popup?.menuInflater?.inflate(R.menu.pop_up_menu, popup.menu)
popup?.show()
popup?.setOnMenuItemClickListener({ item: MenuItem? ->
when (item!!.itemId) {
R.id.logOut -> {
}
}
true
})
} else
super.onOptionsItemSelected(item)
return true
}
片段菜单
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/more"
android:title="menu"
app:showAsAction="always"
android:icon="@drawable/ic_more"/>
</menu>
弹出菜单
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/logOut"
app:showAsAction="always"
android:title="Log Out"
/>
</menu>
我通过的观点是这样的
@Nullable
public View getView() {
return this.mView;
}
解决方案
正如@CodeRed 提到的那样,您传递了错误。 view
代替
var popup: PopupMenu? = PopupMenu(context!!, view!!)
到
val vItem = getActivity().findViewById<View>(R.id.more)
var popup: PopupMenu? = PopupMenu(context!!, vItem)
推荐阅读
- angular - 如何将动态 XHR 内容动态导入模板?
- php - 使用php在Mysql数据库中存储数据时遇到问题
- sql-server - 如何在 SQL Server 中将二进制转换为整数
- shell - 如何从文件中提取或剪切特定数据?
- typescript - TSLint 不会抱怨缺少导入
- sql - 是否可以以这种格式显示 2 个 SQL 语句的结果?
- jestjs - 如何配置 Jest 以使用 ES5
- windows - Windows C API:wincrypt 和 sspi 有什么区别?
- gdb - 使用 GDB 调试 xinetd 服务
- php - 使用“upload_dir”选项时,Symfony 4“Easy admin”上传目录不会改变