无需打开键盘即可更改多行EditText光标位置

时间:2014-07-23 19:29:36

标签: java android

我正在创建一个包含EditText的对话框。该对话框占用屏幕的一半以上,对话框的逻辑不允许使用键盘。

我正在使用此解决方案Android 4.0 EditText without soft keyboard and with cursor positioning,但我发现当你有一个多行EditText时,它不起作用,因为你只能选择第一行。

是否有可用于多行EditText的解决方案?

对于单行,这有效:

if(v.getId() == R.id.emo_text_field){
    Layout layout = ((EditText) v).getLayout();
    float x = event.getX() + v.getScrollX();
    int offset = layout.getOffsetForHorizontal(0, x);
    if(offset>0){
        if(x>layout.getLineMax(0)){
            ((EditText) v).setSelection(offset);     // touch was at end of text
        }
        else{
            ((EditText) v).setSelection(offset - 1);
        }
    }
    return true;
}

1 个答案:

答案 0 :(得分:0)

根据要求,这是我找到的解决方案:

public void disableSoftInputFromAppearing(EditText editText) {
    if (Build.VERSION.SDK_INT >= 11) {
        editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
        editText.setTextIsSelectable(true);
    } else {
        editText.setRawInputType(InputType.TYPE_NULL);
        editText.setFocusable(true);
    }
}

在你的onCreate中,只需输入:

disableSoftInputFromAppearing(editTextView); 

这样,键盘就不会出现在Android的任何SDK版本上。希望它可以帮助别人。