5

我正在尝试使我的活动屏幕可以滚动,但不幸的是,当我尝试它时,应用程序崩溃了。我有该活动的以下 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>

我怎样才能让它可滚动?

4

3 回答 3

13

您的应用程序崩溃,因为 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>
于 2013-07-22T16:53:22.663 回答
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>

希望能帮到你

于 2013-07-22T16:32:56.040 回答
3

我认为您必须将您的相对布局包含在您的滚动视图中(定义之前和关闭之后)。

编辑:您还必须在 Liner Layout 中附上您的相对布局

前任 :

<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>
于 2013-07-22T16:18:59.853 回答