2015-09-13 96 views
0

當我執行方向更改時,滾動視圖有時會重新定位,所以我失去了我的視圖的標題(例如Cholcolates的Chips ...)textview。如何在方向改變時設置滾動條的位置?

這是我想要的。

enter image description here

當我執行的方向改變我失去標題視圖。

enter image description here

這是我的滾動視圖佈局。

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_margin="0dp" 
    android:scrollbars="vertical" 
    android:fillViewport="true" 
    android:scrollbarAlwaysDrawVerticalTrack="true" 
    android:id="@+id/scrollview"> 
    <LinearLayout 
     style = "@style/Activity" 
     android:keepScreenOn="false" 
     android:paddingBottom="0dp" 
     android:id="@+id/recipe_view" > 

     <TextView 
      android:id="@+id/name" 
      style="@style/name" 
      android:hint="@string/recipe_title" 
      /> 
     <TextView 
      android:id="@+id/instructions" 
      style="@style/instructions" 
      android:gravity="start" 
      android:hint="@string/recipe_instructions" 
      /> 
    </LinearLayout> 

</ScrollView> 

在片段的onCreateView()我打電話

// correct the position of the scrollview 
    mView.findViewById(R.id.recipe_view).scrollTo(0, 0); 

沒有效果。

這個問題似乎是隨機的。有時滾動條將標題推出視圖,有時它不會。

回答

0

當方向改變時,您可以保存並恢復滾動位置。

保存的onSaveInstanceState中的當前位置:

protected void onSaveInstanceState(Bundle outState) { 
super.onSaveInstanceState(outState); 
outState.putIntArray("ARTICLE_SCROLL_POSITION", 
     new int[]{ mScrollView.getScrollX(), mScrollView.getScrollY()});} 

,並恢復它在onRestoreInstanceState:

protected void onRestoreInstanceState(Bundle savedInstanceState) { 
super.onRestoreInstanceState(savedInstanceState); 
final int[] position = savedInstanceState.getIntArray("ARTICLE_SCROLL_POSITION"); 
if(position != null) 
    mScrollView.post(new Runnable() { 
     public void run() { 
      mScrollView.scrollTo(position[0], position[1]); 
     } 
    });} 

- 或 -

非哈克的方式將只需將android:configChanges="keyboardHidden|orientation|screenSize"放在AndroidManifest.xml中特定活動的標記中,然後處理活動休閒s凝結你自己。

+0

我基本上已經做了第一個,但通過在我的onCreateView方法中設置scrollTo(0,0)。我不需要保存狀態,因爲我知道我想要的起始狀態[(0,0)]。 – deanresin