android - PopupMenu - 如何?
问题描述
我是 android 的初学者,并尝试制作一个在单击 imageView 时弹出菜单的应用程序。实际上它有效,但在右侧弹出,我想在中心。所以,我在网上搜索它并遇到了 ListPopupWindow、PopupWindow 类。我根据我的知识/能力尝试了此类的各种方法,但我无法做到这一点。指导我这样做。这是我的代码
imageview setonclickListener(new View.onclickListener() {
@Override public void onClick(View view){
PopupMenu popup = new PopupMenu(Info4 Activity.this, imageview1);
Menu menu = popup.getMenu();
for (int i = 0; i < (int) (subjects.size()); i++) {
val = subjects.get((int) (i));
menu.add(val);
}
popup.show();
}
});
解决方案
弹出菜单:
如果有空间,弹出窗口将出现在锚点下方,如果没有,则弹出窗口将出现在锚点上方。在您的情况下,锚点是imageView
,因此您无法将弹出窗口置于屏幕中心。
弹出窗口:
尝试这个:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.showAtLocation(v, Gravity.CENTER, 0, 0);// here v is any View only needed for WindowToken
}
});
其他更好的方法:
也许您可以考虑使用可定制且灵活的DialogFragment。
推荐阅读
- mysql - mysql sql select和inner join for follower/followee名称
- excel - 在 Excel VBA 中将货币转换为数字
- html - 在固定的全屏菜单 CSS 中滚动
- asp.net - 使用 IdentityServer4 进行无休止的循环重定向
- decimal - ngx-formly json 供电使用十进制管道
- nginx - 在 nginx 中添加从 `url.org//` 到 `url.org` 的重定向
- android - 无论应用从属关系如何,都可以返回到上次打开的活动的正确意图标志
- if-statement - Google 表格中的嵌套 OR 语句 - 匹配评估错误
- selenium - 什么是 Firefox Gecko 相当于 Chrome 的 --disable-dev-shm-usage 标志
- vba - 如何优化一个 VBA 宏,它一次添加到多个阿拉伯语单词的链接