如何为此布局添加ScrollView?

时间:2013-11-12 08:26:51

标签: android android-layout dynamic-data

我想在我的应用程序中添加scrollview。该应用程序包含两个线性布局,我在其中动态添加数据。我想滚动所有屏幕,因此它显示所有数据。当我尝试添加它时显示错误,“滚动视图只能有一个孩子”。如何在layout.xml中添加Scrollview?

这是我的Layout.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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:id="@+id/myapp"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/my_logo"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:src="@drawable/my_logo" 
        >
    </ImageView>

    <TextView
        android:id="@+id/label1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/label1"
        android:layout_below="@id/my_logo" />

   <Spinner 
       android:id="@+id/spinner1"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_below="@id/label1"/>

   <TextView
        android:id="@+id/label2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/spinner1"
        android:text="@string/label2" />

   <Spinner 
       android:id="@+id/spinner2"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_below="@id/label2"/>

   <TextView
        android:id="@+id/label3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/spinner2"
        android:text="@string/label3" />


   <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/list"
        android:layout_below="@id/label3"
        >

    </LinearLayout>

   <Button 
       android:id="@+id/submit_button"
       android:layout_below="@id/list2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/submit_button"/>

   <TextView
        android:id="@+id/label4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/submit_button"
        android:text="@string/label4" />

    <LinearLayout 
    android:id="@+id/my_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:layout_below="@id/label4" />

</RelativeLayout>

4 个答案:

答案 0 :(得分:1)

ScrollView与FrameLayout非常相似。当那里只有一个视图时,它们往往更好地工作。使ScrollView成为父视图并将所有内容放在其中。

答案 1 :(得分:0)

就像它说的那样,一个scrollview只能有一个孩子,只需将布局作为孩子,并将所有内容放在此布局中。

<ScrollView 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">
<RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/myapp" >
    <ImageView
        android:id="@+id/my_logo"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:src="@drawable/my_logo" 
        >
    </ImageView>

    <TextView
        android:id="@+id/label1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/label1"
        android:layout_below="@id/my_logo" />

   <Spinner 
       android:id="@+id/spinner1"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_below="@id/label1"/>

   <TextView
        android:id="@+id/label2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/spinner1"
        android:text="@string/label2" />

   <Spinner 
       android:id="@+id/spinner2"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_below="@id/label2"/>

   <TextView
        android:id="@+id/label3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/spinner2"
        android:text="@string/label3" />


   <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/list"
        android:layout_below="@id/label3"
        >

    </LinearLayout>

   <Button 
       android:id="@+id/submit_button"
       android:layout_below="@id/list2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/submit_button"/>

   <TextView
        android:id="@+id/label4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/submit_button"
        android:text="@string/label4" />

    <LinearLayout 
    android:id="@+id/my_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:layout_below="@id/label4" />
</RelativeLayout>
</ScrollView>

答案 2 :(得分:0)

只需将相对布局放在scrollview中就可以了。

<ScrollView 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
<RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:id="@+id/myapp"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/my_logo"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        >
    </ImageView>

    <TextView
        android:id="@+id/label1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ss"
        android:layout_below="@id/my_logo" />

   <Spinner 
       android:id="@+id/spinner1"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_below="@id/label1"/>

   <TextView
        android:id="@+id/label2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/spinner1"
        android:text="ss" />

   <Spinner 
       android:id="@+id/spinner2"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_below="@id/label2"/>

   <TextView
        android:id="@+id/label3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/spinner2"
        android:text="ss" />


   <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/list"
        android:layout_below="@id/label3"
        >

    </LinearLayout>

   <Button 
       android:id="@+id/submit_button"
       android:layout_below="@id/list"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="sss"/>

   <TextView
        android:id="@+id/label4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/submit_button"
        android:text="ssss" />

    <LinearLayout 
    android:id="@+id/my_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:layout_below="@id/label4" />

</RelativeLayout>
</ScrollView>

答案 3 :(得分:0)

将整个布局包裹在Relative Layout或FrameLayout中 然后添加ScrollView ScrollView只能有一个直接元素作为子

<ScrollView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <RelativeLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
<!--         yourLayout here -->

    </RelativeLayout>
</ScrollView