如何将ScrollView滚动到文本中的某个位置

时间:2013-10-25 06:54:27

标签: android textview scrollview

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

有人知道这样做的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

尝试使用scrollTo方法More Info

查看以下代码

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");
    }
}); 

答案 1 :(得分:1)

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

enter image description here

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

答案 2 :(得分:0)

您是否尝试过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布局中。

希望这有助于您入门。