2015-04-07 47 views
2

我在ScrollView里面有一个TextView。我想滚动文本,以便已知行号或多或少垂直居中。这应该不难,但似乎是这样。我还没有看到任何专门针对滚动到给定行号的问题的帖子或教程。如何滚动到给定的行号,ScrollView里面的TextView

我的研究,我认为它应该像这样工作之后......

scroller.scrollTo(0, lineNumb * html.getLineHeight()); 

其中滚轮是滚动型的R.Id和HTML是TextView的,并且lineNumb是obvously行号,但文字不会移动。

我已经把它变成一个可运行的,但仍然没有喜悦...

scroller.post(new Runnable() { 
    public void run() { 
    scroller.scrollTo(0, lineNumb * html.getLineHeight());}}); 

我一整天都在试图弄清楚这一点在研究过很多职位,教程等,但我在一个死胡同。我必须错过很简单的事情。希望你能帮助。

米克

回答

1

你可以通过这样的行数滚动textViewScrollView

textView.setText(text); 
final int lineNumber = 20; 
scroller.post(new Runnable() { 
    @Override 
    public void run() { 
     int y = textView.getLayout().getLineTop(lineNumber); 
     scroller.scrollTo(0, y); 
    } 
}); 

此外,您只能textView没有包装scrollView滚动。

<TextView 
    android:id="@+id/text" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:scrollbars="vertical" 
    android:maxLines="10" 
    android:padding="16dp"/> 

要滚动textView

TextView textView = (TextView) findViewById(R.id.text); 
textView.setMovementMethod(new ScrollingMovementMethod()); 
final int lineNumber = 20 
textView.post(new Runnable() { 
    @Override 
    public void run() { 
     int y = textView.getLayout().getLineTop(lineNumber); 
     textView.scrollTo(0, y); 
    } 
}); 

希望这将是对你有用。

+0

当你的代码不起作用我检查了我的xml文件 - TextView不在ScrollView中! :(我已经把它正确地开始,但我认为它被移动,当我使用设计视图清理。 我很高兴知道我不需要scrollview - 简单总是更好:) – Mick

相关问题