AlertDialog.Builder对话框没有类似finish()或者dismiss()这样的方法。
但是它的父类AlertDialog有dismiss方法,而且AlertDialog.Builder在.show()的时候会得到一个AlertDialog对象,我们就可以用dismiss方法将该Builder关闭。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog dialog = builder.show();
dialog.dismiss();
Android中的弹出框在被点击时, 无论点击哪个按钮都会关闭窗口。 但是有的情况下我们不需要立即关闭窗口。下面的情况是弹出框中要求用户输入文件名,并在点击确定时检查文件名的合法性, 不合法则提示用户重新输入, 弹出框要保持在界面上使用反射
DialogInterface.OnClickListener dialogListener = new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: try { //不关闭 Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); field.setAccessible(true); field.set(dialog, false); } catch (Exception e) { e.printStackTrace(); } if(inputCheck()){ //关闭对话框 try { Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); field.setAccessible(true); field.set(dialog, true); } catch (Exception e) { e.printStackTrace(); } dialog.dismiss(); } break; case DialogInterface.BUTTON_NEGATIVE: dialog.dismiss(); break;default:
break; } } };设置普通按钮不可点击:Button.setEnabled(false);//设置这个属性
java代码中设置或更改一个控件的背景图片:
Resources resources = getContext().getResources();
Drawable btnDrawable = resources.getDrawable(R.drawable.layout_bg);
layout.setBackgroundDrawable(btnDrawable);
LayoutInflater inflater = this.getLayoutInflater();View view = inflater.inflate(R.layout.test_alertdialog_listview,null);ListView lv = (ListView)view.findViewById(R.id.test_alertdialog_listview);lv.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1,datas));lv.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView parent, View view,int position, long id) {alertdialog.dismiss();Toast.makeText(TestAndroid.this, datas[position], Toast.LENGTH_LONG).show();}});alertdialog = new AlertDialog.Builder(this)// .setView(view);.setItems(datas, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}}).create();// 在此使用setview方法可以设置布局文件和alertdialog四周边框的距离,可以消除黑边框alertdialog.setView(view, 0, 0, 0, 0);alertdialog.show();