父ScrollView中的可滚动GridView无法正常工作

时间:2014-09-03 11:42:10

标签: android xml gridview

在我的应用程序中,我需要将两个xml文件显示为一个xml,因此我使用了ScrollView布局。但 在cardetails2 xml文件中我使用了GridView,因为我需要将数据显示为行列格式,这个数据来自远程服务器我将这些数据绑定到GridView.I使GridView Scrollable因为数据很大而我首先需要只显示3行。当我滚动GridView时,将显示另一行。但是当尝试滚动gridView时它不起作用只有父滚动查看工作。任何人都知道它为什么不工作。我已经在googling中浪费了很多时间。我正在附加xml文件所以得到更多的想法。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#EFF1F0"
    android:orientation="vertical">

    <LinearLayout android:id="@+id/car_details_header"
                    android:layout_width="match_parent"
                    android:background="#000000"
                    android:layout_height="60dp">

        <Button
            android:id="@+id/btn_cardet"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:background="@drawable/back_btn" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/cardetails_name"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#848484" >

        <TextView
            android:id="@+id/txt_carname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="Large Text"
            android:layout_marginLeft="10dp"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    </LinearLayout>

    <LinearLayout android:id="@+id/cardetails_price"
                  android:layout_width="match_parent"
                  android:layout_height="40dp"
                  android:background="#01A9DB"
                  android:orientation="vertical">

        <TextView
            android:id="@+id/txt_cardetails_price"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Large Text"
            android:layout_gravity="center"
            android:textAppearance="?android:attr/textAppearanceLarge" />


    </LinearLayout>

    <LinearLayout
        android:id="@+id/cardetails_main_context"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Deepak" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:src="@drawable/img1" />

    </LinearLayout>

第二个xml文件

 <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#EFF1F0"
        android:fillViewport="true"
        android:padding="5dp"   >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">


        <GridView
            android:id="@+id/cardetail_grid"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:numColumns="2"
            android:verticalSpacing="1dp"
            android:background="#ECCEF5">
        </GridView>

        <Button
            android:id="@+id/btn_cardetails_req"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:background="@drawable/request_quote_btn"/>

        <Button
            android:id="@+id/btn_cardetails_call"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:background="@drawable/call_btn" />


        </LinearLayout>
    </ScrollView>

  Here is main xml file


<?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#EFF1F0" >

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

            <include layout="@layout/cardetails"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_horizontal"/>

            <include layout="@layout/cardetails2"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_horizontal"/>


        </LinearLayout>  

2 个答案:

答案 0 :(得分:1)

如您所知,gridview继承自scrollView。所以在滚动高度计算过程中会出现一些问题。 您可以覆盖gridview的OnMesure方法,它可以很好地工作。

sample  var1a    var1b    var1c    var2a    var2b    var2c
1      -169.784 -155.414 -146.555 -175.295 -159.534 -132.511
2      -180.577 -180.792 -178.192 -177.294 -171.809 -166.147
3      -178.605 -184.183 -177.672 -167.321 -168.572 -165.335

然后使用MyGridView而不是GridView。你可以滚动它。

答案 1 :(得分:0)

Add scrollview to first xml :: like as below

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#EFF1F0"
            android:orientation="vertical">

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

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical" >
    <LinearLayout android:id="@+id/car_details_header"
                        android:layout_width="match_parent"
                        android:background="#000000"
                        android:layout_height="60dp">

            <Button
                android:id="@+id/btn_cardet"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:background="@drawable/back_btn" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/cardetails_name"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="#848484" >

            <TextView
                android:id="@+id/txt_carname"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:text="Large Text"
                android:layout_marginLeft="10dp"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout android:id="@+id/cardetails_price"
                      android:layout_width="match_parent"
                      android:layout_height="40dp"
                      android:background="#01A9DB"
                      android:orientation="vertical">

            <TextView
                android:id="@+id/txt_cardetails_price"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Large Text"
                android:layout_gravity="center"
                android:textAppearance="?android:attr/textAppearanceLarge" />


        </LinearLayout>

        <LinearLayout
            android:id="@+id/cardetails_main_context"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
             android:orientation="vertical" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="Deepak" />

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:src="@drawable/img1" />

        </LinearLayout>
        </LinearLayout>
        </ScrollView>
          </LinearLayout>  
相关问题