我想制作一个 UI
元素,如 GridView
,我希望它具有完整的功能,但希望它可以水平滚动而不是垂直滚动。
水平滚动是指它应该以这种方式构建,而不是放在 HorizontalScrollView
中。
我会是 Custom GridView
将有固定数量的 rows
说 4-5
而 columns
应该根据适配器
中的项数可扩展
。您可以认为它与原生 GridView
的功能相反,但它应该保持功能。
我看过谷歌如何实现 GridView
的源代码,但我能理解的很少,开始从头开始制作 View
并没有这似乎是个好主意,因为恐怕我无法像 Google 那样公正地对待内存优化。
我观察到 GridView
扩展了 AbsListView
,所以我的问题是,AbsListView
是否允许 GridView
> 垂直滚动并从适配器添加项目,或者是添加垂直滚动功能的 GridView
?我应该调整 GridView
还是 AbsListView
?
如果知道是否有某些东西已经在做我想做的事,那就更好了?
这已经在 Android Honeycomb 3.1 及更高版本的原生 Gallery 和 YouTube 应用中实现。因此,如果有人有想法,请详细说明。
Honeycomb Gallery 应用快照:
Honeycomb YouTube 应用快照:
最佳答案
API 11 中有 setRotation
。您必须将 gridview 旋转 90 度,将 subview 旋转 -90 度。
文档:http://developer.android.com/reference/android/view/View.html#setRotation(float )
更新:
要在 View 上获得 3d 效果,遵循 API 会很有用
setCameraDistance(float) - 设置z轴距离(深度)
setRotationX(float) - 设置水平轴角度
setRotationY(float) - 设置垂直轴角度
将相机距离设置为屏幕高度的一半。然后根据 View 在屏幕上的位置设置 rotationX。旋转角度应该类似于 (20, 10, 0, -10, -20) 从左到右。稍后您可以使用 rotationY 角度来获得一些高度感知。
在扩展的 GridView
的覆盖 layout
方法中进行所有设置。
@override
void layout(int t, int l, int r, int b) {
super.layout(t, l, r, b);
...
int columnStart = getFirstVisiblePosition()/no_of_columns;
int columnEnd = getLastVisiblePosition()/no_of_columns;
loop from 'columnStart' to 'columnEnd' 'no_of_colmns' times {
// set the camera distance and rotationX to views
// depending on the position of a view on screen.
}
}
关于android - 更改 GridView 的行为以使其水平滚动而不是垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577153/