您的位置:首页 > 移动开发 > Android开发

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了,完美方案
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐