我有一个ScrollView,其中包含一个TextView,我想像HTML中的锚点一样将其滚动到特定的段落(例如page.html#paragraph_id)。
是否有人知道如何做到这一点?
谢谢!
我有一个ScrollView,其中包含一个TextView,我想像HTML中的锚点一样将其滚动到特定的段落(例如page.html#paragraph_id)。
是否有人知道如何做到这一点?
谢谢!
尝试使用scrollTo
方法了解更多信息
检查以下代码
TextView tv = (TextView)findViewById(R.id.textView);//my text view
ScrollView sv = (ScrollView) findViewById(R.id.scrollView);//my scrollview
String log ="a Very long text";
tv.setText(log);
sv.post(new Runnable() {
public void run() {
sv.scrollTo(0, "value till you want to scroll");
}
});
这是一个非常有趣的问题。我也在尝试做同样的事情。
我所做的是将TextView的行映射到ScrollView坐标的想法。
你可以获取设备显示大小(以像素为单位)和TextView的行高(通过TextView.getLineheight()),然后计算行坐标并将其映射到ScrollView。
正如我所说,我也正在尝试做这个。我目前正在进行相同的工作。如果我找到一些可行的代码,我会告诉你。
需要做很多工作,因为Android操作系统没有提供您(或我)想要的这种滚动方式。
或者您可以为每行使用TextView并使用此代码:
mScrollView.scrollTo(0, your_text_view_with_the_line.getBottom());
你试过this吗?
假设你有一个TextView或类似的元素(在你的情况下是html#paragraph_1),那么你可以通过以下方式获取该元素的顶部位置:
TextView yourTextView = (TextView) findViewById(R.id.tv_your_text_view);
int position = yourTextView.getTop(); // you could also call yourTextView.getBottom()
之后,您可以滚动到您的位置(您可以将此代码片段放入您的onClick()方法或类似方法中,在单击链接或按钮时跳转到此位置):
ScrollView sc = (ScrollView) findViewById(R.id.scroll_view);
sc.post(new Runnable() {
public void run() {
sc.scrollTo(0, position); // these are your x and y coordinates
}
});
yourTextView
应该在ScrollView布局中。