【问题标题】:Method setText() in EditText changing position of cursor [duplicate]EditText中的方法setText()改变光标的位置[重复]
【发布时间】: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 中的默认行为。所以问题有点不同
  • 问题有点不同,不能视为重复。

标签: android android-view


【解决方案1】:

您应该将文本设置为“”,然后追加将移动光标。

  YourEditText.setText("");
  YourEditText.append("youText");

【讨论】:

  • 这仅在您始终编辑 EditText 的末尾时才有效,否则在跨度中间编辑文本会将光标踢到每个条目的末尾。
猜你喜欢
  • 1970-01-01
  • 2011-04-08
  • 2018-09-11
  • 1970-01-01
  • 2017-11-25
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多