2012-07-18 88 views
2

我有兩個gridviews線性佈局。這是我的XML代碼:如何在一個線性佈局中滾動2個GridViews?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:orientation="horizontal" > 

    <GridView 
    android:id="@+id/leftGrid2" 
    android:layout_width="416dp" 
    android:layout_height="1078dp" 
    android:columnWidth="70dp" 
    android:horizontalSpacing="5dp" 
    android:numColumns="2" 
    android:paddingRight="20dp" 
    android:stretchMode="columnWidth" 
    android:verticalSpacing="5dp" > 

    </GridView> 

    <GridView 
    android:id="@+id/rightGrid2" 
    android:layout_width="400dp" 
    android:layout_height="match_parent" 
    android:columnWidth="70dp" 
    android:horizontalSpacing="5dp" 
    android:numColumns="2" 
    android:stretchMode="columnWidth" 
    android:verticalSpacing="5dp" > 

    </GridView> 
    </LinearLayout> 

如何使這兩個網格視圖一起滾動或同步它們?當我運行我的應用程序時,他們有兩個獨立的卷軸。

謝謝,

+0

你能告訴我們屏幕截圖? – prolink007 2012-07-18 22:04:23

+0

@ prolink007我的網格視圖單獨滾動.. – ss17 2012-07-18 23:50:57

回答

2

的GridView經由其AbsLisView父提供的smoothScrollToPosition(int)方法。這將滾動到您想要的位置。現在,您使用OnScrollListener來收聽ScrollEvent。現在只要配合這些結合在一起:

GridView other; 
@Override public void onScroll(AbsListView view, int firstItem, int visItems, int total) { 
    other.smoothScrollToPosition(firstItem); 
} 

現在,這將不!按預期工作,如果你的兩個觀點是不可比的,即。相同的內容數量。

0

我不得不在畫廊前做過一次。你應該能夠利用這一點,它適用於GridView很容易地:你在說什麼的

public class DualGallery extends Gallery { 

/** 
* Second {@link Gallery} 
*/ 
public DualGallery b; 

/** 
* Current {@link Context} 
*/ 
Context mContext; 

/** 
* Constructor that takes the {@link Context} and second {@link DualGallery} 
* 
* @param context 
* @param b 
*/ 
public DualGallery(Context context, DualGallery b) { 
    super(context); 

    this.mContext = context; 

    this.b = b; 

} 

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
    // Scrolls this and the second Gallery avoiding an endless loop 
    return super.onFling(e1, e2, velocityX, velocityY) 
      && b.onFling2(e1, e2, velocityX, velocityY); 
} 

@Override 
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
    // Scrolls this and the second Gallery avoiding an endless loop 
    return super.onScroll(e1, e2, distanceX, distanceY) 
      && b.onScroll2(e1, e2, distanceX, distanceY); 
} 

@Override 
public void setOnClickListener(OnClickListener l) { 
    super.setOnClickListener(l); 
} 

@Override 
public void setAdapter(SpinnerAdapter adapter) { 
    super.setAdapter(adapter); 
} 

/** 
* Special function to redirect to just 
* {@link Gallery#onFling(MotionEvent, MotionEvent, float, float)} 
* 
* @param e1 
* @param e2 
* @param velocityX 
* @param velocityY 
* @return 
*/ 
public boolean onFling2(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
    return super.onFling(e1, e2, velocityX, velocityY); 
} 

/** 
* Special function to redirect to just 
* {@link Gallery#onScroll(MotionEvent, MotionEvent, float, float)} 
* 
* @param e1 
* @param e2 
* @param distanceX 
* @param distanceY 
* @return 
*/ 
public boolean onScroll2(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
    return super.onScroll(e1, e2, distanceX, distanceY); 
} 

}

相關問題