Android:将菜单显示为列表

Android:将菜单显示为列表,android,navigation,Android,Navigation,在我的应用程序中,我想将菜单显示为列表。我已经有了一个现有的菜单XML文件,我正在使用它进行底部导航,但是我将一些菜单项放入了一个单独的菜单XML中,现在我想将其显示在一个列表中 但到目前为止,我只找到了将菜单显示为上下文菜单、抽屉或导航菜单的方法。是否可以在列表中使用菜单XML,还是必须使用标准的ListView?下面是它应该是什么样子的模型: 这是它的菜单XML(现在只有前两项): 使用全屏对话框片段怎么样?您需要一个普通的xml布局(我不确定是否适用于菜单布局),并且可以在按下按钮/图标

在我的应用程序中,我想将菜单显示为列表。我已经有了一个现有的菜单XML文件,我正在使用它进行底部导航,但是我将一些菜单项放入了一个单独的菜单XML中,现在我想将其显示在一个列表中

但到目前为止,我只找到了将菜单显示为上下文菜单、抽屉或导航菜单的方法。是否可以在列表中使用菜单XML,还是必须使用标准的ListView?下面是它应该是什么样子的模型:

这是它的菜单XML(现在只有前两项):


使用全屏对话框片段怎么样?您需要一个普通的xml布局(我不确定是否适用于菜单布局),并且可以在按下按钮/图标后将其充气

在我的应用程序中,我有一个选项菜单,触摸图标时会显示一个对话框片段。活动:

@Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
        case R.id.actionbar_button_config:
            FragmentManager fm = getSupportFragmentManager();
            YourDialogFragment yourDialogFragment = new YourDialogFragment();
            yourDialogFragment.show(fm, "dialog_fragment");
            return true;
        default:
            return super.onOptionsItemSelected(item);
}
片段:

public class YourDialogFragment extends DialogFragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(STYLE_NORMAL, 0); // here you can define a full-screen style
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();
    View content = inflater.inflate(R.layout.sensor_config_fragment, null);

    builder.setView(content)
            .setTitle("Sensor Config")
            .setPositiveButton("Done", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {

                }
            })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    SensorConfigFragment.this.getDialog().cancel();
                }
            });

    return builder.create();
}

这将创建一个带有标题、“完成”和“取消”按钮的对话框片段,但您不必拥有这些按钮。如果您不需要这些,可以使用OnCreateView而不是onCreateDialog,并在那里放大布局。

与使用实际活动相比,这里有什么优势?我的问题的全部原因是,我希望能够使用菜单XML,如果我不想使用,那么有很多可能的解决方案。我认为您只能将菜单用作选项/上下文/弹出菜单。就我理解你的问题而言,你想要一个全屏菜单,就像截图上的列表一样,对吗?你可以用一个全屏对话框片段来做类似的事情,这就是优势所在。当然,可能有更好的解决方案。