含有EditText,屏蔽系统软键盘

来源:互联网 发布:vnr网络连接不畅 编辑:程序博客网 时间:2024/04/25 19:42

 

转载请注明原文地址:http://blog.csdn.net/forwardyzk/article/details/36900497

一.使用EditText时,不让其弹出系统的小键盘,而是使用自定义的小键盘。

操作步骤:

   在初始化时,获取EditText对象后,

  EditText editText =(EditText)this.findViewById(R.id.et_editText_pass);

editText.setInputType(InputType.TYPE_NULL);

   editText.setOnTouchListener(newView.OnTouchListener() {

                           

                            @Override

                            publicboolean onTouch(View arg0, MotionEvent event) {

                                     intinType = editText.getInputType();

                                     editText.setInputType(InputType.TYPE_NULL);

                                     editText.onTouchEvent(event);

                                     editText.setInputType(inType);

                                     intlen = editText.getText().toString().length();

                                     editText.setSelection(len);

                                     editText.setBackgroundResource(R.drawable.customer_item_blue);

                                     returntrue;

                            }

                   });

 

 

解释1.

editText.setInputType(InputType.TYPE_NULL);这样是把输入的方式值为空,这样是进入这个页面后,不弹出系统的键盘。

这样就可以把系统的软键盘屏蔽掉,直接使用自定义的键盘进行操作。

  解释2:

   editText.setOnTouchListener(newView.OnTouchListener() {

                           

                            @Override

                            publicboolean onTouch(View arg0, MotionEvent event) {

                                     intinType = editText.getInputType();

                                     editText.setInputType(InputType.TYPE_NULL);

                                     editText.onTouchEvent(event);

                                     editText.setInputType(inType);

                                     intlen = editText.getText().toString().length();

                                     editText.setSelection(len);

                                     editText.setBackgroundResource(R.drawable.customer_item_blue);

                                     returntrue;

                            }

                   });

处理的是,当点击EditText后,也不让弹出系统的键盘。

 

二.如果EditText输入的是密码.那么上一个方法就不能使用了,因为如果使用editText.setInputType(InputType.TYPE_NULL);默认的不弹出系统的小键盘。

你设置EditText的属性

android:inputType="textPassword"

android:password="true"

那么你输入的字符时,显示的不是密码。也就是其设置的属性不再起作用。

 

解决方案有两种:

   1.使用第一种方案解决,那么手动的将输入的字符转变为*号或者逗点。这种方案是比较麻烦和复杂的。

   2.在获取EditText前,增加这个这句代码:

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);  屏蔽系统的键盘。

当然也要增加

editText.setOnTouchListener(newView.OnTouchListener() {

                           

                            @Override

                            publicboolean onTouch(View arg0, MotionEvent event) {

                                     intinType = editText.getInputType();

                                     editText.setInputType(InputType.TYPE_NULL);

                                     editText.onTouchEvent(event);

                                     editText.setInputType(inType);

                                     intlen = editText.getText().toString().length();

                                     editText.setSelection(len);

                                     editText.setBackgroundResource(R.drawable.customer_item_blue);

                                     returntrue;

                            }

                   });

防止点击EditText的时候,弹出系统的键盘

 

 

附加内容:

  如果使用外接键盘输入密码,如果外接键盘不起作用,可以给EditText增加这两个属性,

 

android:focusable="true"

android:clickable="true"

 

对于为什么这样,具体的原因不是很清楚,只是知道这样设置后,就可以使用外接键盘输入了。也许和焦点有关系,还需要大家给讲解。

0 0
原创粉丝点击