1、自定义布局:
AlertDialog.Builder builder = new Builder(AddGroupActivity.this);
final AlertDialog dialog = builder.create();
///注意: 显示dialog,必须在setContentView之前
dialog.show();
Window dialWindow = dialog.getWindow();
dialWindow.setContentView(layout);
2、在自定义布局中添加了EditText,点击后,软件不可用,解决方法有二种:
(1) 在dialog.show()之前 添加一个空的 dialog.setView(new EditText(context));
这样使得AlertDialog加载了EditText 的交互功能;
(2)在dialog.show(); 之后加添下面代码:
//这行很重要奥
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
//显示软件盘
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
3.代码如下:
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.dialview, null);
final EditText groupName = (EditText)layout.findViewById(R.id.groupName);
Button bn1 = (Button)layout.findViewById(R.id.dail_bn1);
Button bn2 = (Button)layout.findViewById(R.id.dail_bn2);
AlertDialog.Builder builder = new Builder(AddGroupActivity.this);
final AlertDialog dialog = builder.create();
// 可用
// dialog.setView(new EditText(this));
// 显示dialog,必须在setContentView之前
dialog.show();
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
Window dialWindow = dialog.getWindow();
dialWindow.setContentView(layout);
WindowManager.LayoutParams lp = dialWindow.getAttributes();
// 获取屏幕宽、高用
DisplayMetrics d = getResources().getDisplayMetrics();
//设置宽度
lp.width = (int) (d.widthPixels * 0.8);
dialWindow.setAttributes(lp);
bn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
T.showShort(AddGroupActivity.this, "点击了确定按钮");
Log.d("===groupName==",groupName.getText().toString());
dialog.dismiss();
}
});
bn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
T.showShort(AddGroupActivity.this, "点击了取消按钮");
Log.d("===groupName==",groupName.getText().toString());
dialog.dismiss();
}
});