如何使整个页面可滚动

How to make whole page scrollable

我有一个 activity,它有一个 DrawerLayoutImageViewTextViewGridView。我希望整个页面滚动但只有网格视图滚动。

这是我的xml。

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
    android:id="@+id/rel"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent">

    <!-- everything you already have -->
    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <include
            android:id="@+id/app_bar"
            layout="@layout/home_app_bar" />


            <ImageView
                android:id="@+id/imageView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/picker1"
                android:layout_below="@+id/app_bar"
                android:layout_alignLeft="@+id/welcome"
                android:layout_alignStart="@+id/welcome"
                android:layout_marginTop="20dp"/>
            <android.support.v4.view.ViewPager
                android:id="@+id/pager"
                android:layout_below="@+id/welcome"
                android:layout_width="fill_parent"
                android:layout_height="150dp">
            </android.support.v4.view.ViewPager>

            <TextView
                android:id="@+id/welcome"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/imageView"
                android:padding="5dp"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="5dp"
                android:text="Welcome,"
                android:textColor="#000000"
                android:textSize="15sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:text="Guest"
                android:textColor="@color/accentColor"
                android:textSize="15sp"
                android:id="@+id/name"
                android:layout_alignTop="@+id/welcome"
                android:layout_toRightOf="@+id/welcome"
                android:layout_toEndOf="@+id/welcome" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Date"
                android:layout_marginRight="10dp"
                android:padding="5dp"
                android:textColor="#000000"
                android:textSize="15sp"
                android:id="@+id/date"
                android:layout_alignTop="@+id/name"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true" />

            <GridView
                android:id="@+id/gridview"
                android:layout_width="match_parent"
                android:layout_height="fill_parent"
                android:columnWidth="80dp"
                android:numColumns="3"
                android:verticalSpacing="16dp"
                android:horizontalSpacing="16dp"
                android:padding="12dp"
                android:stretchMode="columnWidth"
                android:gravity="center"
                android:background="#ffffff"
                android:layout_below="@+id/pager"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Free Listing"
                android:id="@+id/buttonFreeListing"
                android:background="@color/primaryColorDark"
                android:textColor="#ffffff"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />

            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/spinnerCity"
                android:layout_marginLeft="20dp"
                android:background="@drawable/edittext"
                android:layout_marginTop="20dp"
                android:layout_marginRight="10dp"
                android:layout_alignBottom="@+id/imageView"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_toRightOf="@+id/name"
                android:layout_toEndOf="@+id/name"
                android:layout_below="@+id/app_bar" />


        <fragment
            android:id="@+id/fragment_navigation_drawer"
            android:name="com.techieweb.solutions.pickeronline.NavigationDrawerFragment"
            android:layout_width="280dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:layout="@layout/fragment_navigation_drawer"
            tools:layout="@layout/fragment_navigation_drawer" />

    </android.support.v4.widget.DrawerLayout>

</RelativeLayout>
</ScrollView>

请帮我看看怎么做。

以父视图为 ScrollView 的方式调整您的视图,并且它只有一个子视图,其余代码都在这个子视图中。例如:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
      <RelativeLayout>
        <!-- everything you already have -->
      </RelativeLayout>
</ScrollView>

在您的 DrawerLayout

中生两个孩子
  1. ScrollView
  2. DrawerFragment

ScrollView 内有 LinearLayout,方向为 垂直 ,其他所有东西都放在 LinearLayout 内。

这一定会对你有所帮助。

你不能把GridView放在ScrollView里面,因为两者都有滚动效果..

因此,如果你想在 ScrollView 中包含 GridView,你必须像 Problems with GridView inside ScrollView in android and How to put GridView inside ScrollView 帖子那样以编程方式进行..

您可以用 TableLayout 代替 GridView,然后将所有内容都放在 ScrollView 中,例如 ..

<android.support.v4.widget.DrawerLayout  
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/drawer_layout"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <ScrollView 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
     <RelativeLayout
     android:id="@+id/rel"
     android:layout_width="wrap_content"
     android:layout_height="fill_parent">

          //-----// 
     <TableLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
          <TableRow
           android:layout_width="fill_parent"
           android:layout_height="fill_parent">
          </TableRow>
     </TableLayout> 
     </RelativeLayout>
  </ScrollView> 
<fragment
android:id="@+id/fragment_navigation_drawer"   
//--//
</android.support.v4.widget.DrawerLayout>

你可以这样试试....

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" >

<RelativeLayout android:id="@+id/rel" >

    <include
        android:id="@+id/app_bar"
        layout="@layout/home_app_bar" />

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

        // your other view
    </ScrollView>
</RelativeLayout>

<fragment android:id="@+id/fragment_navigation_drawer" />

试试这个代码

     <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<RelativeLayout
    android:id="@+id/rel"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent">

    <ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    >
    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="fill_parent">

    <include
        android:id="@+id/app_bar"
        layout="@layout/home_app_bar" />


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/picker1"
        android:layout_below="@+id/app_bar"
        android:layout_alignLeft="@+id/welcome"
        android:layout_alignStart="@+id/welcome"
        android:layout_marginTop="20dp"/>
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_below="@+id/welcome"
        android:layout_width="fill_parent"
        android:layout_height="150dp">
    </android.support.v4.view.ViewPager>

    <TextView
        android:id="@+id/welcome"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/imageView"
        android:padding="5dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="5dp"
        android:text="Welcome,"
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="Guest"
        android:textColor="@color/accentColor"
        android:textSize="15sp"
        android:id="@+id/name"
        android:layout_alignTop="@+id/welcome"
        android:layout_toRightOf="@+id/welcome"
        android:layout_toEndOf="@+id/welcome" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Date"
        android:layout_marginRight="10dp"
        android:padding="5dp"
        android:textColor="#000000"
        android:textSize="15sp"
        android:id="@+id/date"
        android:layout_alignTop="@+id/name"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />


    <GridView
        android:id="@+id/gridview"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:columnWidth="80dp"
        android:numColumns="3"
        android:verticalSpacing="16dp"
        android:horizontalSpacing="16dp"
        android:padding="12dp"
        android:stretchMode="columnWidth"
        android:gravity="center"
        android:background="#ffffff"
        android:layout_below="@+id/pager"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Free Listing"
        android:id="@+id/buttonFreeListing"
        android:background="@color/primaryColorDark"
        android:textColor="#ffffff"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/spinnerCity"
        android:layout_marginLeft="20dp"
        android:background="@drawable/edittext"
        android:layout_marginTop="20dp"
        android:layout_marginRight="10dp"
        android:layout_alignBottom="@+id/imageView"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_toRightOf="@+id/name"
        android:layout_toEndOf="@+id/name"
        android:layout_below="@+id/app_bar" />

</RelativeLayout>
</ScrollView>
</RelativeLayout>
<fragment
    android:id="@+id/fragment_navigation_drawer"
    android:name="com.techieweb.solutions.pickeronline.NavigationDrawerFragment"
    android:layout_width="280dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:layout="@layout/fragment_navigation_drawer"
    tools:layout="@layout/fragment_navigation_drawer" />

     </android.support.v4.widget.DrawerLayout>