2014-09-03 74 views
1

在我的應用程序中,我需要將兩個xml文件顯示爲一個xml,因此我使用了ScrollView佈局。但是 在cardetails2 xml文件中,我使用了GridView,因爲我需要將數據顯示爲行列格式。此數據來自遠程服務器我將此數據綁定到GridView.I使GridView可滾動,因爲數據非常龐大,我只需要顯示3行第一次。當我滾動GridView時,會顯示另一行。但當試圖滾動gridView時,它不工作,只有父scrollView工作。任何人都知道爲什麼它不工作。我已經浪費了大量的時間在Google上。 XML文件,所以得到更多的想法。父ScrollView中的可滾動GridView無法正常工作

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

gridview它自我擴展滾動視圖,所以它的問題scrollview內,它不會工作。 – 2014-09-03 11:47:06

+0

只需刪除滾動視圖,如果沒有需要。 – 2014-09-03 11:48:11

+0

如果我刪除滾動視圖它顯示gridView的數據沒有scroll.thats爲什麼使用scrollview數據很大,爲什麼我需要顯示前3行。然後用戶滾動網格視圖 – user3458375 2014-09-03 11:52:38

回答

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

我用你的代碼替換,但它不起作用 – user3458375 2014-09-03 12:25:53

+0

你能告訴我哪裏需要更改代碼 – user3458375 2014-09-03 12:28:15

1

正如你所知道的GridView從滾動視圖繼承。所以在滾動高度計算中存在一些問題。 你可以重寫GridView的OnMesure方法,它可以很好地工作。

public class MyGridView extends GridView{ 

    public MyGridView (Context context) { 
     super(context); 
    } 
    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     int expandSpec = MeasureSpec.makeMeasureSpec( 
       Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, expandSpec); 

    } 
} 

然後用MyGridView代替GridView。你可以滾動它。