Android:将菜单显示为列表

时间:2019-01-16 07:09:59

标签: android navigation

在我的应用中,我想将菜单显示为列表。我已经有一个现有的菜单XML文件,该文件用于底部导航,但是我将一些菜单项放入了一个单独的菜单XML中,现在我希望将其显示在列表中。

但是到目前为止,我仅找到了将菜单显示为上下文菜单,在抽屉中或作为导航菜单的方法。是否可以在列表中使用菜单XML,还是必须诉诸于标准ListView?这是外观的样机:

Navigation tab

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

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/nav_illness"
          android:title="@string/illness"
          android:icon="@drawable/medical" />
    <item android:id="@+id/nav_vacation"
          android:title="@string/vacation"
          android:icon="@drawable/tree" />
</menu>

1 个答案:

答案 0 :(得分:0)

使用全屏对话框片段怎么办?您将需要常规的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并在其中填充布局。