EditText中的方法setText()改变光标的位置[重复]
Posted
技术标签:
【中文标题】EditText中的方法setText()改变光标的位置[重复]【英文标题】:Method setText() in EditText changing position of cursor [duplicate] 【发布时间】:2019-03-27 09:48:18 【问题描述】:我编写了一个库,其中包含从 EditText 扩展而来的自定义视图。
我希望当用户调用 setText() 时光标会停留在同一位置
但默认情况下 EditText setText() 将光标移动到开头
-> setText("1111") ->
我该如何解决?我可以以某种方式覆盖 setText 方法(或其他方法,如 bringPointToView() 等)
编辑 1: 这不是this问题的重复
因为我想覆盖光标在 Edittext 处的标准行为。
并且不强制 lib 的用户调用 append() 或 setSelection()
编辑 2: 我的解决方案
@Override
public void setText(CharSequence text, BufferType type)
super.setText(text, type);
if (getText() != null)
Selection.setSelection(getText(), getText().length());
【问题讨论】:
在调用setText()
时也调用editText.setSelection(editText.getText().length());
正如我所说,它是一个图书馆。我不能强迫用户每次都调用 setSelection。我希望这将是我的 setText 的自定义 Edittext 中的默认行为。所以问题有点不同
问题有点不同,不能视为重复。
【参考方案1】:
您应该将文本设置为“”,然后追加将移动光标。
YourEditText.setText("");
YourEditText.append("youText");
【讨论】:
这仅在您始终编辑 EditText 的末尾时才有效,否则在跨度中间编辑文本会将光标踢到每个条目的末尾。以上是关于EditText中的方法setText()改变光标的位置[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Android edittext - settextmethod 光标问题
Android中的EditText中,输入信息时,怎么能让光标停靠在输入的信息的右侧而不是左侧呢?
Android edittext - settextmethod 光标问题
我可以在使用自定义键盘时访问 EditText setText 方法吗?