在项目中我们使用AlertDialog时,并不想在输入框内容为空点击确定dialog就消失了,我们可以这样写:
View view = LayoutInflater.from(mContext).inflate(R.layout.dialog_layout,null);
oldEdit = view.findViewById(R.id.et_old);
newEdit = view.findViewById(R.id.et_new);
confirmEdit = view.findViewById(R.id.et_confirm);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext)
.setView(view)
.setPositiveButton("确定", null) // 点击事件设置为null
.setNegativeButton("取消", null);
dialog = builder.create();
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
// 获取按钮,另设点击事件,点击按钮dialog不调用dismiss()就不会消失了
positiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
originPsw = oldEdit.getText().toString().trim();
newPsw = newEdit.getText().toString().trim();
newPswAgain = confirmEdit.getText().toString().trim();
if (TextUtils.isEmpty(originPsw)){
Toast.makeText(TestActivity.this,"请输入原始密码",Toast.LENGTH_SHORT).show();
}else if (TextUtils.isEmpty(newPsw)){
Toast.makeText(TestActivity.this,"请输入新密码",Toast.LENGTH_SHORT).show();
}else if (TextUtils.isEmpty(newPswAgain)){
Toast.makeText(TestActivity.this,"请再次输入新密码",Toast.LENGTH_SHORT).show();
}else if (!"123456".equals(originPsw)){
Toast.makeText(TestActivity.this,"原始密码输入错误",Toast.LENGTH_SHORT).show();
}else if (!newPsw.equals(newPswAgain)){
Toast.makeText(TestActivity.this,"两次输入的新密码不一致",Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(TestActivity.this,"设置成功",Toast.LENGTH_SHORT).show();
}
}
});
Button negavieButton = dialog.getButton(AlertDialog.BUTTON_NEGATIVE);
negavieButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
// 设置dialog按钮居中显示
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) positiveButton.getLayoutParams();
layoutParams.weight = 10;
positiveButton.setLayoutParams(layoutParams);
negavieButton.setLayoutParams(layoutParams);