将 PopupMenu 锚定到 ImageView
Anchoring a PopupMenu to an ImageView
我有一个 ImageView,可以在单击时打开 PopupMenu。如何设置 PopupMenu 在某个位置显示? PopupMenu 将用作下拉菜单,我希望 PopupMenu 的右上角位于用户单击的位置。见下图说明:
我目前拥有的:
我想要的:
相关代码:
mNavViewDropDown= navViewHeader.findViewById(R.id.navview_header_expand);
mNavViewDropDown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu popup = new PopupMenu(getContext(), mNavViewDropDown);
//Inflating the Popup using xml file
popup.getMenuInflater()
.inflate(R.menu.menu_navview_header_, popup.getMenu());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(
getContext(),
"You Clicked : " + item.getTitle(),
Toast.LENGTH_SHORT
).show();
return true;
}
});
popup.show(); //showing popup menu
}
});
您可以设置弹出菜单的重力。
popup.setGravity(Gravity.LEFT);
话虽这么说,但您所做的更像是黑客攻击。不能保证它会出现在左侧。您应该使用 expandableListView 或制作您自己的可扩展视图。试试这个库:https://github.com/AAkira/ExpandableLayout。它提供了一种显示可扩展视图的简单方法。
所以我没有使用那个老掉牙的下拉式弹出菜单,而是意识到已经有更好的工具来解决这个问题:
https://developer.android.com/guide/topics/ui/controls/spinner#java
我有一个 ImageView,可以在单击时打开 PopupMenu。如何设置 PopupMenu 在某个位置显示? PopupMenu 将用作下拉菜单,我希望 PopupMenu 的右上角位于用户单击的位置。见下图说明:
我目前拥有的:
我想要的:
相关代码:
mNavViewDropDown= navViewHeader.findViewById(R.id.navview_header_expand);
mNavViewDropDown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu popup = new PopupMenu(getContext(), mNavViewDropDown);
//Inflating the Popup using xml file
popup.getMenuInflater()
.inflate(R.menu.menu_navview_header_, popup.getMenu());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(
getContext(),
"You Clicked : " + item.getTitle(),
Toast.LENGTH_SHORT
).show();
return true;
}
});
popup.show(); //showing popup menu
}
});
您可以设置弹出菜单的重力。
popup.setGravity(Gravity.LEFT);
话虽这么说,但您所做的更像是黑客攻击。不能保证它会出现在左侧。您应该使用 expandableListView 或制作您自己的可扩展视图。试试这个库:https://github.com/AAkira/ExpandableLayout。它提供了一种显示可扩展视图的简单方法。
所以我没有使用那个老掉牙的下拉式弹出菜单,而是意识到已经有更好的工具来解决这个问题:
https://developer.android.com/guide/topics/ui/controls/spinner#java