繁体   English   中英

在不打开键盘的情况下更改多行EditText光标的位置

[英]Change multiline EditText cursor position without opening keyboard

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

我使用的是不带软键盘且具有光标定位的Android 4.0 EditText解决方案但我发现当您有多行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;
}

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

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版本上。 希望它可以帮助别人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM