0

我得到異常:滾動型必須持有1只直接孩子的異常

java.lang.IllegalStateException: ScrollView can host only one direct child 

這是我的佈局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/frame" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/bg_listgrey" 
    android:scrollbars="none" > 

    <RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/bg_listgrey" > 

     <RelativeLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/rl1"> 

      <ImageView 
       /> 

      <TextView 
       /> 

      <TextView 
       /> 

      <TextView 
       /> 
     </RelativeLayout> 

     <RelativeLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/rl2"" > 

      <ImageView 
       /> 

      <TextView 
       /> 
     </RelativeLayout> 
    </RelativeLayout> 

</ScrollView> 

相同的佈局在活動的情況下正常工作。在Fragment中使用時,它會給予例外。

MainActivity:

FragmentTransaction t = this.getSupportFragmentManager() 
     .beginTransaction(); 
t.add(R.id.frame, new mFragment()); 
t.commit(); 

謝謝

編輯:如果

位我在FragmeLayout包裝這個滾動型,它工作正常。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/frame" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/bg_listgrey" > 

    <ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scrollbars="none" > 
....... 
....... 
....... 
</ScrollView> 
</FramLayout> 

回答

1

相同的佈局中的活動的情況下工作得很好。在片段中使用時,它會給出 的例外。

佈局會工作得很好,作爲一個Activity內容視圖(但儘量另一個視圖添加到ScrollView,看看它是如何去;)),它只會工作,以及爲Fragment,你不用得不好。這:

t.add(R.id.frame, new mFragment()); 

將添加視圖(onCreate創建的)到ScrollView(該ScrollView有ID R.id.frame),這意味着你必須在ScrollView兩種觀點(這是不允許的) :RelativeLayoutFragment的視圖的根。 ScrollView課程的addView方法將檢查以強制您最終得到ScrollView中的一個孩子。

位如果我在FragmeLayout中包裝此ScrollView,它工作正常。

爲您添加Fragment的觀點父FrameLayout,而不是到ScrollView這是正常的。

相關問題