坑
EditText的用法众多,其中在配合对话框显示输入框时遇到了奇怪的问题,代码如下:
final EditText editText= new EditText(this);
editText.setInputType(InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_VARIATION_PASSWORD);
dialog2=new AlertDialog.Builder(this)
.setTitle("输入密码")//设置对话框的标题
//.setView(editText)如果在这里设置View会致使在第二次启动对话框时报错,说已有子view必须先移除
.setIcon(android.R.drawable.ic_dialog_info)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (editText.getText().toString().trim().length()==0){
showLoginDialog("系统提示","密码不能为空",false);
}else {
new Thread(new Runnable() {
@Override
public void run() {
userBean.setUsername(userName);
userBean.setPassword(editText.getText().toString());
Gson gson = new Gson();
//使用Gson将对象转换为json字符串
String json = gson.toJson(userBean);
Log.i("UserAccount","json="+json);
Log.i("UserAccount","userName="+userName);
Log.i("UserAccount","password="+editText.getText().toString());
doLogin(json);
}
}).start();
}
}
}).create();
dialog2.setView(editText);//只能在这里设置
dialog2.setCanceledOnTouchOutside(false);
dialog2.show();
ShowMyDialog.setDialogStyle(dialog2);
}
问题描述如上,具体原因不清楚,有可能是控件自身的问题。
设置输入类型
如果需要在代码设置输入类型为密码输入必须这样设置:
editText.setInputType(InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_VARIATION_PASSWORD);
设置不可输入可以点击
布局文件中设置如下属性即可:
android:clickable="true"
android:focusable="false"