如何解决如何实现android自定义弹出菜单?
我想设计弹出菜单,其菜单项可单击,类似于Android项目中的下图。任何建议都非常感激。谢谢。
解决方法
您必须使用PopupWindow(popupView,width,height,focusable)
:
第一:充气选项菜单
override fun onCreateOptionsMenu(menu: Menu,inflater: MenuInflater) {
super.onCreateOptionsMenu(menu,inflater)
inflater.inflate(R.menu.option_menu,menu)
}
第二:覆盖onOptionsItemSelected
:
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.popup_window -> {
showPopup()
true
}
}
这是showPopup()
的逻辑:
private fun showPopup() {
val anchor = requireActivity().findViewById<View>(R.id.popup_window) // set the menuOption as anchor so that the popup will display TOP RIGHT of the screen
val inflater = requireContext().getSystemService(LAYOUT_INFLATER_SERVICE) as LayoutInflater // get layoutinflater from the system service
val popupView = inflater.inflate(R.layout.popUp_window_options,null) // inflate the popUp_window_options wictch display on popup
// create the popup window
val width = LinearLayout.LayoutParams.WRAP_CONTENT
val height = LinearLayout.LayoutParams.WRAP_CONTENT
val focusable = true // lets taps outside the popup also dismiss it
val popupWindow = PopupWindow(popupView,focusable)
popupWindow.elevation = 10f // give it shadow
PopupWindowCompat.showAsDropDown(popupWindow,anchor,Gravity.CENTER)
PopupWindowCompat.setWindowLayoutType( popupWindow,WindowManager.LayoutParams.FLAG_FULLSCREEN)
R.layout.popUp_window_options
是包含选项的布局。
希望能帮助到你。问任何困惑。
您可以将DialogFragment
用于自定义布局。因此,就像创建片段一样,您也可以创建一个DialogFragment,它将具有自己的自定义布局以及对话框功能。如下-
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);
........
}
您可以像调用其他任何片段一样使用此片段,并且custom_dialog_menu.xml
将在对话框菜单中具有您想要的自定义视图。
您也可以在片段内调用此对话框。代码如下-
private void showCustomDialogMenu() {
FragmentManager fm = getParentFragmentManager();
CustomDialogMenu customDialogMenu= CustomDialogMenu.newInstance();
customDialogMenu.setTargetFragment(this,300);
customDialogMenu.show(fm,"custom_dialog_menu");
}
有关更多信息,请遵循this代码路径。
快乐编码!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。