仅使用按钮滚动GridView

时间:2011-03-27 13:58:32

标签: android gridview

我有一个只有Buttons的GridView。应该能够按下按钮(工作)。 但是,如果我想在其中滚动包含许多项目的gridview,那么它不能用于我的HTC Desire,但它可以在模拟器中使用。

我的GridView:

<GridView  
  android:id="@+id/gv_control_group" 
  android:layout_height="wrap_content"
  android:isScrollContainer="true" 
  android:layout_width="fill_parent"
  android:numColumns="auto_fit"
  android:verticalSpacing="10dp"
  android:horizontalSpacing="10dp"
  android:stretchMode="columnWidth"
  android:gravity="center"
  android:scrollingCache="true"
/>

GridViewItem:

<LinearLayout 
  android:id="@+id/gi_socket"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  android:gravity="center_horizontal">

<Button
   android:id="@+id/gi_btn"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:drawableTop="@drawable/green"
/>
</LinearLayout>

第二个问题: 如何在转动设备时让GridView显示更多彼此相邻的项目。现在它只是将两个项目拉伸到整个宽度......

android:stretchMode="none"

无效

修改

Android 2.2存在问题 在2.1的模拟器中一切正常。 但是使用Android 2.2滚动是不可能的......是否有一种解决方法使其在2.2中滚动?

2 个答案:

答案 0 :(得分:3)

解决

问题是GridView上方有一个Button,两者都在LinearLayout中。 LinearLayout self位于ScrollView中。 所以ScrollView阻止了GridView的正常运行(但不适用于Android 2.1!)

答案 1 :(得分:2)

您可以根据需要实施自己的GridView并覆盖onInterceptTouchEventonTouchEvent,这样您就可以检测到它是移动/滚动event并离开event中的GridView或者按钮中的点击将event传递给他们。

我希望这会有所帮助

编辑:关于您的第二个问题,您可以使用例如:

android:stretchMode="spacingWidthUniform"
android:numColumns="auto_fit"
android:columnWidth="100dip"