仿IPhone從底部彈出選項菜單
項目中開發需要,就是在點擊某個控件(如頭像ImageView)時要求彈出一個操作的選項菜單(對話框),效果就是像IPhone的一樣,從手機屏幕底部往上彈出的,做了個簡單的效果工具類,寫下來方便下次使用。
首先我們要定義彈出的對話框樣式:
ublic 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;
}
這樣就可以創建一個對話框了。</pre>