編集可能なテキストを含む TextView があります。このテキストには、onTouch イベントを登録するための画像 (ドローアブル、Html.ImageGetter を使用) があります。そのため、ユーザーがスパン可能なテキストの一部である画像に触れたときに、それを知りたいのです。(そして、彼が触れた画像)。
それは可能ですか?もしそうなら、おそらく汚い回避策はありませんか?
敬具、ヤン・オリバー・オエレリッヒ
編集可能なテキストを含む TextView があります。このテキストには、onTouch イベントを登録するための画像 (ドローアブル、Html.ImageGetter を使用) があります。そのため、ユーザーがスパン可能なテキストの一部である画像に触れたときに、それを知りたいのです。(そして、彼が触れた画像)。
それは可能ですか?もしそうなら、おそらく汚い回避策はありませんか?
敬具、ヤン・オリバー・オエレリッヒ
ArrowKeyMovementMethodソースコードからコピーして、次のコードスニペットを使用してみてください。
private int getOffset(int x, int y, TextView widget){
// Converts the absolute X,Y coordinates to the character offset for the
// character whose position is closest to the specified
// horizontal position.
x -= widget.getTotalPaddingLeft();
y -= widget.getTotalPaddingTop();
// Clamp the position to inside of the view.
if (x < 0) {
x = 0;
} else if (x >= (widget.getWidth()-widget.getTotalPaddingRight())) {
x = widget.getWidth()-widget.getTotalPaddingRight() - 1;
}
if (y < 0) {
y = 0;
} else if (y >= (widget.getHeight()-widget.getTotalPaddingBottom())) {
y = widget.getHeight()-widget.getTotalPaddingBottom() - 1;
}
x += widget.getScrollX();
y += widget.getScrollY();
Layout layout = widget.getLayout();
int line = layout.getLineForVertical(y);
int offset = layout.getOffsetForHorizontal(line, x);
return offset;
}
お役に立てば幸いです、EdenSphere。