【问题标题】:How to scroll ScrollView to certain position in the text [duplicate]如何将ScrollView滚动到文本中的某个位置[重复]
【发布时间】:2013-11-04 04:04:26
【问题描述】:

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

有人知道怎么做吗?

谢谢!

【问题讨论】:

  • 我不擅长 HTML,如果你想以编程方式滚动滚动视图,可以通过以下方式实现 ScrollView sv = (ScrollView)findViewById(R.id.scrl); sv.scrollTo(0, sv.getBottom());或 sv.scrollTo(5, 10);

标签: android textview scrollview


【解决方案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");
    }
}); 

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 为什么要这么麻烦?只需将其拆分为不同的 TextView 并使用上述解决方案...
    • @Erez.info 制作这么多对象会消耗更多堆。所以......我已经指定你可以每行使用一个文本视图。但假设你有 500 行。那么这是严重问题
    • 你是对的,但在我的例子中只有 10 段,所以这个灵魂非常好。无论如何,我想在你完成后看看你的代码
    【解决方案3】:

    你试过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()
    

    之后您可以滚动到您的位置(您可以将此代码 sn-p 放在 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 布局中。

    希望这可以帮助您入门。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多