【问题标题】:Change multiline EditText cursor position without opening keyboard在不打开键盘的情况下更改多行 EditText 光标位置
【发布时间】:2014-09-08 22:27:44
【问题描述】:

我正在创建一个包含 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;
}

【问题讨论】:

  • 你找到解决这个问题的方法了吗?我在使用多行编辑文本时也面临同样的问题
  • @user1213202 是的,对不起,我写了我的答案。

标签: java android


【解决方案1】:

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

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); 

这样,键盘就不会出现在任何 SDK 版本的 Android 上。希望对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2017-06-02
    • 2018-09-11
    • 1970-01-01
    相关资源
    最近更新 更多