gpt4 book ai didi

android - EditText 中 MotionEvent 的位置索引

转载 作者:行者123 更新时间:2023-11-29 22:08:13 34 4
gpt4 key购买 nike

给定一个 EditText 及其 OnTouch 事件,我覆盖它并返回 true。这样可以防止显示软键。但它也阻止了 EditText 中位置索引的内部计算。即 myEditText.getSelectionStart() 将始终返回 0。

有没有一种方法可以根据 OnTouch 事件的 MotionEvent 参数计算(或可以计算的 Android 函数)位置索引?

谢谢。

最佳答案

从 API 级别 14 开始,Android API 中有一个称为 getOffsetForPosition(float x,float y) 的解决方案,用于获取在编辑文本上进行触摸的字符位置。它基本上是一种方法,您可以从您的一个监听器内部为 edittext(onClick 或 onTouch)调用,如下所示:

int click_position = <your_edittext>.getOffsetForPosition(event.getX(), event.getY());

其中 event 是传递给监听器的 MotionEvent。这给出了字符在 edittext View 上进行触摸的位置,使用它可以使用

定位光标
edittext.setSelection(click_position);

但是,如果您希望它在使用早于 4.0 (ICS)(API 级别 13 或更低)的 Android 版本的设备上运行,则此 API 不可用。但是,您可以使用其他可用的 API(这基本上是 Google 从 API 级别 14 开始所做的)为低于 14 的 API 版本开发自己的方法。我这样做了,并且能够成功地从 motionevent 中获取 edittext 上的位置索引。我基本上从 API 级别 1 的 Android 中可用的其他 API 调用编译了一个同名的静态方法。我不确定现在是否需要发布旧 API 级别的代码。如果有兴趣,我会在这里发布代码。

关于android - EditText 中 MotionEvent 的位置索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266764/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com