Android edittext使用自定义键盘时禁用系统软键盘但却不禁用光标
2015-03-11 19:50
886 查看
我有private EditText edittext;
在使用自定义键盘时必须要禁用系统软件盘时必须使用:edittext.setInputType(InputType.TYPE_NULL); // disable soft input
但这样会使得EditText失去了所有的输入属性(例如光标,尽管你可以通过代码给该edittext赋值,但是却再也拥有不了一个闪烁的光标)
要想既禁用系统键盘,又能有自己想要的InputType(一个有光标、所有符号都有相同宽度的InputType),可以如下做法:
1、给EditText设置你想要的InputType:edittext.setInputType(InputType.TYPE_CLASS_TEXT |InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
2、给EditText添加OnTouchListener:
edittext.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
int inType = edittext.getInputType(); // backup the input type
edittext.setInputType(InputType.TYPE_NULL); // disable soft input
edittext.onTouchEvent(arg1); // call native handler
edittext.setInputType(inType); // restore input type
return true;
}
});
3、给EditText添加字符监听(用来设置光标):
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable arg0) {
edittext.setSelection(edittext.length());
}
};);
到此就OK了,完美方案
在使用自定义键盘时必须要禁用系统软件盘时必须使用:edittext.setInputType(InputType.TYPE_NULL); // disable soft input
但这样会使得EditText失去了所有的输入属性(例如光标,尽管你可以通过代码给该edittext赋值,但是却再也拥有不了一个闪烁的光标)
要想既禁用系统键盘,又能有自己想要的InputType(一个有光标、所有符号都有相同宽度的InputType),可以如下做法:
1、给EditText设置你想要的InputType:edittext.setInputType(InputType.TYPE_CLASS_TEXT |InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
2、给EditText添加OnTouchListener:
edittext.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
int inType = edittext.getInputType(); // backup the input type
edittext.setInputType(InputType.TYPE_NULL); // disable soft input
edittext.onTouchEvent(arg1); // call native handler
edittext.setInputType(inType); // restore input type
return true;
}
});
3、给EditText添加字符监听(用来设置光标):
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable arg0) {
edittext.setSelection(edittext.length());
}
};);
到此就OK了,完美方案
相关文章推荐
- Android EditText 使用自定义键盘,隐藏系统键盘,保留光标
- android安卓屏蔽禁用系统输入法,自定义软键盘,解决EditText光标问题demo
- Android 自定义弹出框 EditText获取光标后键盘遮挡,及初始化弹出键盘问题解决
- EditText禁用系统键盘,光标可以继续使用
- 空帐号的问题(vmware环境中,使用sysprep自定义系统后,登录的时候发现administrator帐号被禁用了)
- Android.EditText点击时,隐藏系统弹出的键盘,显示出光标
- ios开发日记- 7 禁用搜狗键盘 使用系统键盘
- 通过settings.db自定义Android系统默认设置:SHOW_IME_WITH_HARD_KEYBOARD 默认物理键盘与软键盘同时使用
- android-使用PopupWindow实现随机排列的自定义密码键盘
- Android学习问题:关于AlertDialog中自定义布局带有的EditText无法弹出键盘
- Android自定义软键盘输入法,隐藏系统输入法显示光标的实现
- Android自定义progressDialog使用系统ProgressBar与图片实现(二)使用图片
- Android Toolbar使用系统原生返回键,并改变其颜色,自定义图片替换系统原生返回键
- Android 开发中使用的颜色可以分为两种,自定义颜色和系统颜色
- Android相机使用(系统相机、自定义相机、大图片处理)
- Android得到系统已安装应用程序包列表方法 自定义ListView显示 PackageManager的使用
- Android 自定义Toast,不使用系统Toast
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
- Android 中 EditText 如何隐藏系统提供的键盘总结
- android 自定义键盘 光标只在前面无法变动