项目中开发需要,就是在点击某个控件(如头像ImageView)时要求弹出一个操作的选项菜单(对话框),效果就是像IPhone的一样,从手机屏幕底部往上弹出的,做了个简单的效果工具类,写下来方便下次使用。
首先我们要定义弹出的对话框样式:
public static Dialog createShowAlert(final Context context, int layoutId) {/**方法中要传入建立对话框的Layout*/
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(layoutId, null);
final int cFullFillWidth = 10000;
layout.setMinimumWidth(cFullFillWidth);
/** R.style.My_Dialog_Style为项目中正定义的样式*/
final Dialog dlg = new Dialog(context, R.style.My_Dialog_Style);
Window w = dlg.getWindow();
WindowManager.LayoutParams lp = w.getAttributes();
lp.x = 0;
final int cMakeBottom = -1000;
lp.y = cMakeBottom;
lp.gravity = Gravity.BOTTOM;//**此处改变显示位置*/
dlg.onWindowAttributesChanged(lp);
dlg.setCanceledOnTouchOutside(true);
dlg.setContentView(layout);
return dlg;
}
/*********在需要创建对话框的地方调用上面方法就可以**********************************/
public static final Dialog showConfirmAlert(final Context context, int titleStrId, int itemStrId, int itemColorId, View.OnClickListener onClick) {
final Dialog dlg = createShowAlert(context, R.layout.my_dialog);/**调用上面的方法*/
TextView titleView = (TextView) dlg.findViewById(R.id.textview1);
titleView.setText(titleStrId);
TextView itemView = (TextView) dlg.findViewById(R.id.textview2);
itemView.setText(itemStrId);
itemView.setTextColor(context.getResources().getColor(onClick));
itemView.setOnClickListener(onClick);
dlg.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dlg.dismiss();
}
});
return dlg;
}
这样就可以创建一个对话框了。