android edittext移动光标位置,Android EditText侦听器,用于更改光标位置

我有一个带有EditText的对话框。 创建EditText时已经填充了它。 当用户将光标放在文本的某些部分上或附近时,将弹出Toast。

我的问题是侦听光标位置的变化。 另一则帖子问了同样的问题,被接受的解决方案是

You can override onSelectionChanged (int selStart, int selEnd) to get notified about selection changes. If the cursor is moved, this is called as well (in this case selStart == selEnd)

onSelectionChanged(int selStart,int selEnd)是TextView类的受保护方法。 如何覆盖它?

我已经在我的项目中成功完成了此操作,但是刚刚发现在某些移动电话上调用了onSelectionChanged(),而在另一些移动电话上则没有调用它。 两者> Android 4.0 ....

对于此应用程序,最好使面包长度短

只需继承或扩展类EditText并将以下代码添加到新创建的类中即可:

@Override

protected void onSelectionChanged(int selStart, int selEnd) {

// Do ur task here.

}

不要忘记将构造函数添加到子类中。 :)

谢谢上师,做得很好。如果有人感兴趣,我会在原始问题上附加我所做的详细信息。

当我将其放入代码时,我得到一个android.view.InflateException: Binary XML file。知道我做错了什么吗?

如果您不能使用子类(例如,侦听SearchView中的光标更改位置,这是一个复杂的布局,其中嵌入了EditText),这将无法正常工作。

@TedHopp请查看以下答案:stackoverflow.com/a/36389070/170842

对于任何有@KamranAhmed问题的人:您是否实现了三个必需的构造函数?您的xml元素是否指向您项目中的正确包?

实际上,您可以监听选择更改,而无需将EditText子类化。它有点复杂,但仍可管理。为此,您需要在文本中添加SpanWatcher并处理选择范围的更改。

final SpanWatcher watcher = new SpanWatcher() {

@Override

public void onSpanAdded(final Spannable text, final Object what,

final int start, final int end) {

// Nothing here.

}

@Override

public void onSpanRemoved(final Spannable text, final Object what,

final int start, final int end) {

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值