我有一个只有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中滚动?
答案 0 :(得分:3)
解决
问题是GridView上方有一个Button,两者都在LinearLayout中。 LinearLayout self位于ScrollView中。 所以ScrollView阻止了GridView的正常运行(但不适用于Android 2.1!)
答案 1 :(得分:2)
您可以根据需要实施自己的GridView
并覆盖onInterceptTouchEvent
和onTouchEvent
,这样您就可以检测到它是移动/滚动event
并离开event
中的GridView
或者按钮中的点击将event
传递给他们。
我希望这会有所帮助
编辑:关于您的第二个问题,您可以使用例如:
android:stretchMode="spacingWidthUniform"
android:numColumns="auto_fit"
android:columnWidth="100dip"