这里真的很愚蠢的问题,但无法找到答案谷歌搜索。
我有一个可点击的文本视图。如何检索被点击的行号?
这个问题并不是那么愚蠢,因为据我所知,没有内置的方法可以做到这一点。
但是,您可以使用:
getLineHeight()
确定每行在 TextView 中的高度和MotionEvent#getY()
在OnTouchListener中计算点击了哪一行。基本示例:
textView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
float line = FloatMath.floor(event.getY() / textView.getLineHeight());
Toast.makeText(getBaseContext(), "" + line, Toast.LENGTH_SHORT).show();
}
return false;
}
});
从getLineHeight()
文档中:
请注意,文本中的标记可能会导致个别行高于或低于此高度,并且布局可能包含额外的第一行或最后一行填充。
因此,如果您修改了上面列出的任何属性,您也需要考虑到这一点。