自定义dialog 出现的问题总结


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();

}
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值