2015-04-07 91 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

相關問題