5

我有一个 ScrollView,里面有一个 TextView,我想将它滚动到某个段落,就像 HTML 中的锚点一样(例如 page.html#paragraph_id)。

有人知道怎么做吗?

谢谢!

4

3 回答 3

1

真的是一个非常有趣的问题。我也很想这样做。
我所做的是将 textview - 线映射到滚动视图坐标的想法。
您可以做的是获取设备显示大小 - 以像素为单位。
和 textview 的行高 by- textview.getLineheight(); 并计算线坐标并将其映射到滚动视图
正如我所说,我也在尝试这样做。我目前正在做同样的事情。如果我发现一些代码有效,我会告诉你。

在此处输入图像描述

它有很多工作要做,因为 android os 不提供您(或我)想要的这种滚动,
或者您可以为每一行设置 textview并使用此代码
mScrollView.scrollTo(0, your_text_view_with_the_line.getBottom());

于 2013-10-25T07:41:08.330 回答
1

尝试使用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");
    }
}); 
于 2013-10-25T07:01:37.393 回答
0

你试过这个吗?

假设您有一个 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 布局中。

希望这可以帮助您入门。

于 2013-10-25T07:07:18.930 回答