转载请注明原文地址: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"
对于为什么这样,具体的原因不是很清楚,只是知道这样设置后,就可以使用外接键盘输入了。也许和焦点有关系,还需要大家给讲解。