仿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>