2013-07-22 255 views
4

我想讓我的活動屏幕有一個窗體被填充滾動,但不幸的是,當我嘗試它崩潰的應用程序。我該活動的下面的XML:android可滾動的活動佈局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/background" 
    android:paddingBottom="16dp" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="16dp" 
    android:textDirection="anyRtl" 
    tools:context=".AddDiscountActivity" > 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView3" 
     android:layout_below="@+id/textView3" 
     android:layout_marginTop="19dp" 
     android:text="@string/discountLocationLabel" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="@color/white" 
     android:textStyle="bold" /> 

    <EditText 
     android:id="@+id/shopLocation" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView4" 
     android:layout_alignBottom="@+id/textView4" 
     android:layout_alignRight="@+id/shopCity" 
     android:ems="10" 
     android:inputType="text" /> 

    <TextView 
     android:id="@+id/textView6" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView5" 
     android:layout_below="@+id/shopDiscount" 
     android:layout_marginTop="21dp" 
     android:text="@string/discountDurationLabel" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="@color/white" 
     android:textStyle="bold" /> 

    <EditText 
     android:id="@+id/shopDiscountDuration" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView6" 
     android:layout_alignLeft="@+id/shopDiscount" 
     android:ems="10" 
     android:inputType="text" /> 

    <TextView 
     android:id="@+id/textView5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/shopDiscount" 
     android:layout_alignParentRight="true" 
     android:text="@string/discountRateLabel" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="@color/white" 
     android:textStyle="bold" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView6" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="18dp" 
     android:background="@drawable/roundbutton" 
     android:text="@string/discountPublishButtonLabel" 
     android:textColor="@color/white" 
     android:onClick="SubmitData" 
     android:width="250dp" /> 

    <EditText 
     android:id="@+id/shopCity" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/textView4" 
     android:layout_alignRight="@+id/shopName" 
     android:ems="10" 
     android:inputType="text" > 


    </EditText> 

    <EditText 
     android:id="@+id/shopDiscount" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/shopLocation" 
     android:layout_below="@+id/shopLocation" 
     android:layout_marginTop="14dp" 
     android:ems="10" 
     android:inputType="number" /> 

    <EditText 
     android:id="@+id/shopName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView2" 
     android:layout_alignBottom="@+id/textView2" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="14dp" 
     android:ems="10" 
     android:inputType="text"> 
     <requestFocus /> 
    </EditText> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/categoriesSpinner" 
     android:layout_alignRight="@+id/textView2" 
     android:text="@string/discountCategoryLabel" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="@color/white" 
     android:textStyle="bold" /> 

    <Spinner 
     android:id="@+id/categoriesSpinner" 
     android:layout_width="160dp" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/shopName" 
     android:layout_alignLeft="@+id/button1" 
     android:layout_marginBottom="16dp" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignRight="@+id/textView2" 
     android:layout_marginTop="206dp" 
     android:text="@string/discountCityLabel" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="@color/white" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/shopCity" 
     android:layout_alignLeft="@+id/textView5" 
     android:layout_marginBottom="18dp" 
     android:text="@string/discountShopLabel" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="@color/white" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/textView7" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignRight="@+id/textView1" 
     android:layout_marginTop="14dp" 
     android:gravity="right" 
     android:text="@string/addDiscountMsg" 
     android:textAlignment="viewEnd" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="@color/white" 
     android:textDirection="anyRtl" /> 

</RelativeLayout> 

,當我試圖定義的RelativeLayout之後和在關閉的RelativeLayout之前添加以下時,它立即打破了應用程序,當我運行它。

<ScrollView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      > 

      ........... 
</ScrollView> 

我該如何讓它滾動?

+0

你能請張貼整個xml文件? – Wenhui

+0

這是此活動的整個xml文件我的朋友 –

+0

好的,那麼''的close標記在哪裏。 – Wenhui

回答

2

我認爲你必須把你的相對佈局放在你的滾動視圖中(在定義和關閉之後)。

編輯:您還必須在襯板佈局附上相對佈局

例如:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/scroll" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true" 
    android:stackFromBottom="true" 
    android:transcriptMode="alwaysScroll" > 

    <LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/background" 
    android:paddingBottom="16dp" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="16dp" 
    android:textDirection="anyRtl" 
    tools:context=".AddDiscountActivity" > 
    </RelativeLayout> 

    </LinearLayout> 

</SrcollView> 
+0

這是不允許的。它會在相對佈局 –

+0

之前引發定義xmlns的錯誤Ok對不起。我在裏面使用了線性佈局,它工作正常。 –

+0

您還必須將相對佈局放入線性佈局中,這顯然是必要的。 –

7

像這樣做,它的工作:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
<RelativeLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/background" 
android:paddingBottom="16dp" 
android:paddingLeft="16dp" 
android:paddingRight="16dp" 
android:paddingTop="16dp" 
android:textDirection="anyRtl" 
tools:context=".AddDiscountActivity" > 

<TextView 
    android:id="@+id/textView4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/textView3" 
    android:layout_below="@+id/textView3" 
    android:layout_marginTop="19dp" 
    android:text="@string/discountLocationLabel" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="@color/white" 
    android:textStyle="bold" /> 

<EditText 
    android:id="@+id/shopLocation" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/textView4" 
    android:layout_alignBottom="@+id/textView4" 
    android:layout_alignRight="@+id/shopCity" 
    android:ems="10" 
    android:inputType="text" /> 

<TextView 
    android:id="@+id/textView6" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/textView5" 
    android:layout_below="@+id/shopDiscount" 
    android:layout_marginTop="21dp" 
    android:text="@string/discountDurationLabel" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="@color/white" 
    android:textStyle="bold" /> 

<EditText 
    android:id="@+id/shopDiscountDuration" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/textView6" 
    android:layout_alignLeft="@+id/shopDiscount" 
    android:ems="10" 
    android:inputType="text" /> 

<TextView 
    android:id="@+id/textView5" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/shopDiscount" 
    android:layout_alignParentRight="true" 
    android:text="@string/discountRateLabel" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="@color/white" 
    android:textStyle="bold" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView6" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="18dp" 
    android:background="@drawable/roundbutton" 
    android:text="@string/discountPublishButtonLabel" 
    android:textColor="@color/white" 
    android:onClick="SubmitData" 
    android:width="250dp" /> 

<EditText 
    android:id="@+id/shopCity" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/textView4" 
    android:layout_alignRight="@+id/shopName" 
    android:ems="10" 
    android:inputType="text" > 


</EditText> 

<EditText 
    android:id="@+id/shopDiscount" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/shopLocation" 
    android:layout_below="@+id/shopLocation" 
    android:layout_marginTop="14dp" 
    android:ems="10" 
    android:inputType="number" /> 

<EditText 
    android:id="@+id/shopName" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/textView2" 
    android:layout_alignBottom="@+id/textView2" 
    android:layout_alignParentLeft="true" 
    android:layout_marginLeft="14dp" 
    android:ems="10" 
    android:inputType="text"> 
    <requestFocus /> 
</EditText> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/categoriesSpinner" 
    android:layout_alignRight="@+id/textView2" 
    android:text="@string/discountCategoryLabel" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="@color/white" 
    android:textStyle="bold" /> 

<Spinner 
    android:id="@+id/categoriesSpinner" 
    android:layout_width="160dp" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/shopName" 
    android:layout_alignLeft="@+id/button1" 
    android:layout_marginBottom="16dp" /> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignRight="@+id/textView2" 
    android:layout_marginTop="206dp" 
    android:text="@string/discountCityLabel" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="@color/white" 
    android:textStyle="bold" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/shopCity" 
    android:layout_alignLeft="@+id/textView5" 
    android:layout_marginBottom="18dp" 
    android:text="@string/discountShopLabel" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="@color/white" 
    android:textStyle="bold" /> 

<TextView 
    android:id="@+id/textView7" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignRight="@+id/textView1" 
    android:layout_marginTop="14dp" 
    android:gravity="right" 
    android:text="@string/addDiscountMsg" 
    android:textAlignment="viewEnd" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="@color/white" 
    android:textDirection="anyRtl" /> 

    </RelativeLayout> 
    </ScrollView> 

希望幫助您

+0

@sys_debug您是否嘗試過我的代碼 – androidqq6

11

你的應用程序崩潰,因爲ScrollView只能託管一個直接的孩子。 從官方文件直接:

佈局容器可以由用戶 滾動,允許它比物理顯示較大的圖的層次結構。 ScrollView 是一個FrameLayout,這意味着你應該在其中放置一個包含 內容的子項來滾動;這個孩子本身可能是一個佈局複雜的對象層次結構的經理。一個經常使用 的孩子是一個垂直方向的LinearLayout,它呈現一個頂級項目的垂直數組,用戶可以滾動瀏覽。

看這http://developer.android.com/reference/android/widget/ScrollView.html

解決您的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/background" 
    android:paddingBottom="16dp" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="16dp" 
    android:textDirection="anyRtl" 
    tools:context=".AddDiscountActivity" > 

    <ScrollView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 

      <TextView 
       android:id="@+id/textView4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignRight="@+id/textView3" 
       android:layout_below="@+id/textView3" 
       android:layout_marginTop="19dp" 
       android:text="@string/discountLocationLabel" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="@color/white" 
       android:textStyle="bold" /> 

      <EditText 
       android:id="@+id/shopLocation" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBaseline="@+id/textView4" 
       android:layout_alignBottom="@+id/textView4" 
       android:layout_alignRight="@+id/shopCity" 
       android:ems="10" 
       android:inputType="text" /> 

      <TextView 
       android:id="@+id/textView6" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignRight="@+id/textView5" 
       android:layout_below="@+id/shopDiscount" 
       android:layout_marginTop="21dp" 
       android:text="@string/discountDurationLabel" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="@color/white" 
       android:textStyle="bold" /> 

      <EditText 
       android:id="@+id/shopDiscountDuration" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBottom="@+id/textView6" 
       android:layout_alignLeft="@+id/shopDiscount" 
       android:ems="10" 
       android:inputType="text" /> 

      <TextView 
       android:id="@+id/textView5" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBottom="@+id/shopDiscount" 
       android:layout_alignParentRight="true" 
       android:text="@string/discountRateLabel" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="@color/white" 
       android:textStyle="bold" /> 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/textView6" 
       android:layout_centerHorizontal="true" 
       android:layout_marginTop="18dp" 
       android:background="@drawable/roundbutton" 
       android:text="@string/discountPublishButtonLabel" 
       android:textColor="@color/white" 
       android:onClick="SubmitData" 
       android:width="250dp" /> 

      <EditText 
       android:id="@+id/shopCity" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_above="@+id/textView4" 
       android:layout_alignRight="@+id/shopName" 
       android:ems="10" 
       android:inputType="text" /> 

      <EditText 
       android:id="@+id/shopDiscount" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignLeft="@+id/shopLocation" 
       android:layout_below="@+id/shopLocation" 
       android:layout_marginTop="14dp" 
       android:ems="10" 
       android:inputType="number" /> 

      <EditText 
       android:id="@+id/shopName" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBaseline="@+id/textView2" 
       android:layout_alignBottom="@+id/textView2" 
       android:layout_alignParentLeft="true" 
       android:layout_marginLeft="14dp" 
       android:ems="10" 
       android:inputType="text"> 
       <requestFocus /> 
      </EditText> 

      <TextView 
       android:id="@+id/textView1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBottom="@+id/categoriesSpinner" 
       android:layout_alignRight="@+id/textView2" 
       android:text="@string/discountCategoryLabel" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="@color/white" 
       android:textStyle="bold" /> 

      <Spinner 
       android:id="@+id/categoriesSpinner" 
       android:layout_width="160dp" 
       android:layout_height="wrap_content" 
       android:layout_above="@+id/shopName" 
       android:layout_alignLeft="@+id/button1" 
       android:layout_marginBottom="16dp" /> 

      <TextView 
       android:id="@+id/textView3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_alignRight="@+id/textView2" 
       android:layout_marginTop="206dp" 
       android:text="@string/discountCityLabel" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="@color/white" 
       android:textStyle="bold" /> 

      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_above="@+id/shopCity" 
       android:layout_alignLeft="@+id/textView5" 
       android:layout_marginBottom="18dp" 
       android:text="@string/discountShopLabel" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="@color/white" 
       android:textStyle="bold" /> 

      <TextView 
       android:id="@+id/textView7" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_alignRight="@+id/textView1" 
       android:layout_marginTop="14dp" 
       android:gravity="right" 
       android:text="@string/addDiscountMsg" 
       android:textAlignment="viewEnd" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="@color/white" 
       android:textDirection="anyRtl" /> 

     </LinearLayout> 
    </ScrollView> 
</RelativeLayout> 
+0

如果我這樣做,它開始告訴我在xml文件的所有區域中刪除android:layout_alignRight =「@ + id/textView3」類似的代碼。將它們刪除不會破壞應用程序本身? –

+0

它告訴你,因爲「android:layout_alignRight」是一個RelativeLayout的屬性,你可以將LinearLayout更改爲RelativeLayout – Tobiel

+0

我不明白這一點......你只是說它只能有一個直接的chlid,但你的例子有幾個直接childern./ –