2011-03-01 88 views

回答

3

在onCreate,onStart或onResume期間,您無法調用smoothScrolTo()。試着給一個小的延遲是這樣的:

public void onResume() { 
    super.onResume(); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      HorizontalScrollView sv = (HorizontalScrollView)findViewById(R.id.ScrollView01); 
      sv.smoothScrollTo(1000, 0); 
     } 
    }, 100); 
} 

這對我的作品,但劑量任何人都知道一個更好的時間調用smoothScrollTo(如在聽衆。)?

10

使用View.getViewTreeObserver.addOnGlobalLayoutListener添加監聽器以瞭解何時放置滾動視圖。在回調中,您可以設置滾動。

在回調中使用removeGlobalOnLayoutListener(this)取消註冊其他事件。

scroll.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){ 
    @Override 
    public void onGlobalLayout(){ 
     scroll.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
     scroll.scrollTo(x, y); 
    } 
}); 
0

解決此問題的另一種方法是通過xml。

的訣竅是添加「空間意見」Horizo​​ntalScrollView的孩子的,並將它們的寬度設置爲偏移您想擁有。

實施例:

<!--BUTTONS ON HORIZONAL SCROLL --> 
    <HorizontalScrollView 
     android:id="@+id/scroll_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <LinearLayout 
      android:id="@+id/scroll_view_child_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 

      <!-- This View does the trick! --> 
      <Space 
       android:layout_width="16dp" 
       android:layout_height="match_parent" /> 

      <Button 
       android:id="@+id/btn_1" 
       style="@style/HorizontalScrollButtons" 
       android:text="Btn1" /> 

      <Button 
       android:id="@+id/btn_2" 
       style="@style/HorizontalScrollButtons" 
       android:text="Btn1" /> 

      <!-- Keep adding buttons... --> 

      <!-- This View does the trick too! --> 
      <Space 
       android:layout_width="16dp" 
       android:layout_height="match_parent" /> 


     </LinearLayout> 

    </HorizontalScrollView> 

在我想要一個16DP 「餘量」 的例子,所以我得到空間查看16DP的寬度

它會給這個... The way we want

...而不是這個...... enter image description here

...爲起始視圖。