java - 关闭 Android 弹出菜单
问题描述
我正在尝试使用一个弹出菜单,该菜单使用动态添加的 EditText 框的视图。
当我没有在 onTouch 方法中创建新的弹出菜单时,弹出窗口会按预期关闭,但是我想不出一种方法来以这种方式使用被触摸的 EditText 的视图。相反,弹出窗口将显示在最后添加的 EditText 的视图中。
View.OnTouchListener subjectListener(final EditText editText) {
return new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
popupMenu = new PopupMenu(MainActivity.this, editText);
popupMenu.getMenu().add("works");
popupMenu.show();
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
popupMenu.getMenu().close();
list.get((Integer) editText.getTag()).setText(item.getTitle());
return true;
}
});
return false;
}
};
}
使用此代码,弹出菜单也会准确显示在我想要的位置,除非我触摸另一个 EditText 几次,否则它不会关闭。这让我觉得我正在创建多个弹出菜单或其他东西。
有任何想法吗?
解决方案
popupmenu.dismiss();
您可以使用它来关闭弹出窗口
推荐阅读
- java - 如何将 Base64 字符串发送到 API(MathPix OCR)?
- javascript - 使用 chrome 扩展自动将文件上传到站点?
- django - 如何创建和启动表单选择字段,而不是在模型中?
- php - 从 MySQL 服务器查询图像导致文件损坏
- javascript - 动画 SVG 图标作为 React JS 中的组件
- haskell - 如何使用它们之间的通用关系更改 (x, y) 对?
- scala - Scala,docker - 如何使用 sbt-native-packager 在多模块应用程序中设置 mainClass?
- sql - 如何复制多对多关系
- angular - Angular Material Autocomplete 不保留选择
- c++ - CSUF EPP - 你的想法是什么(添加到链表末尾的麻烦)