使用EditText遇到的坑

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"

猜你喜欢

转载自blog.csdn.net/weixin_42182191/article/details/82227123
今日推荐