Android 返回负边界的Paint.getTextBounds()
我试图在imageview上显示的画布中查找正在单击的文本。我已经覆盖了imageview上的触控。这就是我使用的方法。我已经在画布上存储了所有的x,y坐标,我在画布上显示了文本以及文本和绘画。当触发Motion\u event.ACTION\u DOWN时。我获取事件坐标并检查事件坐标是否在文本边界内。下面是代码片段Android 返回负边界的Paint.getTextBounds(),android,paint,Android,Paint,我试图在imageview上显示的画布中查找正在单击的文本。我已经覆盖了imageview上的触控。这就是我使用的方法。我已经在画布上存储了所有的x,y坐标,我在画布上显示了文本以及文本和绘画。当触发Motion\u event.ACTION\u DOWN时。我获取事件坐标并检查事件坐标是否在文本边界内。下面是代码片段 float xRatio=(float)mTempBitmap.getWidth()/(float)mEditImageView.get
float xRatio=(float)mTempBitmap.getWidth()/(float)mEditImageView.getWidth();
float yRatio= (float)mTempBitmap.getHeight()/(float)mEditImageView.getHeight();
mEditImageView.setImageBitmap(mTempBitmap);
for (TextItem textItem : mTextItemStack) {
Rect tempRect = new Rect();
textItem.getPaint().getTextBounds(textItem.getTextContent(), 0, textItem.getTextContent().length() - 1, tempRect);
tempRect.offset(textItem.getXCoordinate(), textItem.getYCoordinate());
if (tempRect.contains((int)(event.getX()*xRatio), (int) (event.getY()*yRatio))) {
mtextItemInFocus = textItem;
break;
}
}
但是问题出现在getTextBounds()调用中
但是我得到了负的边界。显然,我对getTextBounds的理解是错误的。请纠正我。我欢迎采取另一种方法来做同样的事情 你是说
top
绑定为负数,还是全部为负数?我建议使用android.text.Layout
来绘制文本/检测文本boundaries@MikeM. 是顶部为负值(0,0)处的原点是文本基线的左侧点。由于y轴的方向是向上的,因此向上为负数,top
边界为负数。这有意义吗?@MikeM。明白了,谢谢。