如何实现android自定义弹出菜单?
我想有一个设计的弹出式菜单,其项目可点击类似下图在Android项目。非常感谢您的推荐。非常感谢。如何实现android自定义弹出菜单?,android,material-design,popupmenu,Android,Material Design,Popupmenu,我想有一个设计的弹出式菜单,其项目可点击类似下图在Android项目。非常感谢您的推荐。非常感谢。 您可以在自定义布局中使用DialogFragment。所以,就像您创建一个片段一样,您也可以创建一个DialogFragment,它将有自己的自定义布局和DialogBox特性。如下- public class CustomDialogMenu extends DialogFragment { //global variables public static Custo
您可以在自定义布局中使用
DialogFragment
。所以,就像您创建一个片段一样,您也可以创建一个DialogFragment,它将有自己的自定义布局和DialogBox特性。如下-
public class CustomDialogMenu extends DialogFragment {
//global variables
public static CustomDialogMenu newInstance() {
Bundle args = new Bundle();
CustomDialogMenu customDialogMenu = new CustomDialogMenu();
customDialogMenu.setArguments(args);
return customDialogMenu;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.custom_dialog_menu, container);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
........
}
private void showCustomDialogMenu() {
FragmentManager fm = getParentFragmentManager();
CustomDialogMenu customDialogMenu= CustomDialogMenu.newInstance();
customDialogMenu.setTargetFragment(this, 300);
customDialogMenu.show(fm, "custom_dialog_menu");
}
您可以像调用任何其他片段一样使用此片段,custom\u dialog\u menu.xml
将在对话框菜单中提供您想要的自定义视图
您也可以在片段中调用此对话框。代码如下-
public class CustomDialogMenu extends DialogFragment {
//global variables
public static CustomDialogMenu newInstance() {
Bundle args = new Bundle();
CustomDialogMenu customDialogMenu = new CustomDialogMenu();
customDialogMenu.setArguments(args);
return customDialogMenu;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.custom_dialog_menu, container);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
........
}
private void showCustomDialogMenu() {
FragmentManager fm = getParentFragmentManager();
CustomDialogMenu customDialogMenu= CustomDialogMenu.newInstance();
customDialogMenu.setTargetFragment(this, 300);
customDialogMenu.show(fm, "custom_dialog_menu");
}
有关更多信息,请遵循代码路径
快乐编码 您必须使用
弹出窗口(弹出视图、宽度、高度、可聚焦)
:
首先:充气选项菜单
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.option_menu, menu)
}
第二个:覆盖选择的选项项:
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.popup_window -> {
showPopup()
true
}
}
以下是showPopup()
的逻辑:
private fun showPopup(){
val anchor=requireActivity().findviewbyd(R.id.popup_window)//将菜单选项设置为anchor,以便弹出窗口显示屏幕的右上角
val inflater=requireContext().getSystemService(LAYOUT\u inflater\u SERVICE)作为LayoutFlater//从系统服务获取LayoutFlater
val popupView=充气机.充气(R.layout.popUp\u window\u options,null)//充气弹出窗口上显示的弹出窗口\u options
//创建弹出窗口
val width=LinearLayout.LayoutParams.WRAP\u内容
val高度=LinearLayout.LayoutParams.WRAP_内容
val focusable=true//允许在弹出窗口外轻触,也可以将其关闭
val popupWindow=popupWindow(popupView、宽度、高度、可聚焦)
popupWindow.elevation=10f//给它阴影
PopupWindowCompat.ShowAs下拉列表(popupWindow,锚点,0,0,重心)
PopupWindowCompat.setWindowLayoutType(popupWindow,WindowManager.LayoutParams.FLAG_全屏)
R.layout.popUp\u window\u options
是包含选项的布局。
希望能有帮助。询问任何困惑
在此之后,您将得到如下信息:谢谢您的提示回答。但是,Doe能够从屏幕右上方显示对话框作为弹出菜单行为吗?因为此实现将与弹出菜单相同。如果您严格查找弹出菜单,则上述实现将为您创建一个对话框,然后遵循代码pa或者,您可以简单地在菜单项上应用一个侦听器来显示上面的对话框,选择是:)谢谢您的代码片段。它正在工作。此外,是否可以在右侧添加边距空间?因此,弹出菜单将不会粘在正确的设备屏幕上。