DialogFragment实现右侧、中间、底部菜单

来源:互联网 发布:手机电信网络加速器 编辑:程序博客网 时间:2024/04/28 08:13

效果图

  

实现

public class MenuDialogFragment extends DialogFragment {    private String mPosition;    private JSONArray mItems;    @Override    public Dialog onCreateDialog(Bundle savedInstanceState) {        LayoutInflater inflater = getActivity().getLayoutInflater();        View view = inflater.inflate(R.layout.menu_dialog_layout, null);        ListView listView = (ListView) view.findViewById(R.id.menu_item_lv);        MenuDialogAdapter adapter = new MenuDialogAdapter(getActivity());        adapter.buildMenuItems(mPosition, mItems);        listView.setAdapter(adapter);        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), android.R.style.Theme_DeviceDefault_Dialog);        builder.setView(view);        return builder.create();    }    @Override    public void onStart() {        super.onStart();        Window window = getDialog().getWindow();        WindowManager.LayoutParams params = window.getAttributes();        if ("top".equals(mPosition)) {            params.x = dip2px(getActivity(), 10);            params.y = dip2px(getActivity(), 50);            params.width = window.getWindowManager().getDefaultDisplay().getWidth() / 2;            params.gravity = Gravity.TOP | Gravity.RIGHT;        } else if ("center".equals(mPosition)) {            params.gravity = Gravity.CENTER;        } else {            params.width = WindowManager.LayoutParams.MATCH_PARENT;            params.gravity = Gravity.BOTTOM;        }        window.setAttributes(params);        window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));    }    @Override    public void setArguments(Bundle args) {        try {            mPosition = args.getString("position");            mItems = new JSONArray(args.getString("items"));        } catch (JSONException e) {            e.printStackTrace();        }    }    private int dip2px(Context context, float dpValue) {        float scale = context.getResources().getDisplayMetrics().density;        return (int) (dpValue * scale + 0.5f);    }}
调用

MenuDialogFragment menuDialog = new MenuDialogFragment();Bundle bundle = new Bundle();bundle.putString("position", position);bundle.putString("items", items.toString());menuDialog.setArguments(bundle);menuDialog.show(getActivity().getFragmentManager(), "MenuDialogFragment");

0 0
原创粉丝点击