效果图
实现
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");