android可滚动活动布局

时间:2013-07-22 16:07:19

标签: android

我正在尝试将我的活动屏幕设置为可滚动填充的表单但不幸的是,当我尝试它时崩溃了应用程序。我为该活动提供了以下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" >

    <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>

如何让它可滚动?

3 个答案:

答案 0 :(得分:12)

您的应用程序崩溃,因为ScrollView只能托管一个直接子项。 直接来自官方文档:

  

可以通过滚动的视图层次结构的布局容器   用户,允许它大于物理显示。一个ScrollView   是一个FrameLayout,意味着你应该在其中放置一个子包含   滚动的全部内容;这个孩子本身可能是一个布局   具有复杂的对象层次结构的管理器。经常是孩子   used是一个垂直方向的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>

答案 1 :(得分:8)

这样做,它会起作用:

<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>

希望帮助你

答案 2 :(得分:3)

我认为你必须在滚动视图中(在定义之前和关闭之后)附上你的相对布局。

编辑:您还必须将相对布局包含在班轮布局

前:

<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>