Android edittext使用自定义键盘时禁用系统软键盘但却不禁用光标

我有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了,完美方案

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值