我有一个带有TextView的ScrollView,我想将它滚动到某个段落,就像HTML中的锚点一样(例如page.html#paragraph_id)。
有人知道这样做的方法吗?
谢谢!
答案 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();并计算线
坐标并将其映射到滚动视图
正如我所说,我也在努力做到这一点。我目前正在研究同样的问题。
如果我发现一些代码正常工作,我会告诉你。
它的工作很多,因为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布局中。
希望这有助于您入门。