在这里真的很愚蠢,但找不到答案。
我有一个可单击的文本视图。如何检索单击的行号?
问题不是那么愚蠢,因为我知道没有内置的方法。
但是您可以使用:
-
getLineHeight()
确定文本视图中的每一行的高度和 -
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()
文档:
请注意,文本中的标记可能会导致单个线比该高度更高或更短,并且布局可能包含额外的第一或最后一线填充。
因此,如果您修改了上面列出的任何属性,则还需要考虑。