首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改GridView的行为,使其水平滚动而不是垂直滚动

更改GridView的行为,使其水平滚动而不是垂直滚动
EN

Stack Overflow用户
提问于 2012-07-20 10:02:30
回答 1查看 5.6K关注 0票数 5

我想让UI元素像GridView一样,我希望它具有完整的功能,但希望它是水平滚动的,而不是垂直滚动的。

所谓水平滚动,我的意思是,它应该是那样构建的,而不是放在一个HorizontalScrollView中。

我的Custom GridView将有固定数量的rows,比如说4-5,而columns应该是extensible,基于Adapter中的项目数。您可以认为它与本机GridView的功能相反,但它应该维护该功能。

我已经看过GridView是如何由谷歌实现的源代码,但是我能够理解得更少,开始从头开始制作View似乎不是一个好主意,因为我担心我不能像Google那样对内存优化进行公正的处理。

我注意到GridView扩展了AbsListView,所以我的问题是,是AbsListViewGridView垂直滚动并从适配器中添加项,还是GridView增加垂直滚动功能?我应该调整GridView还是AbsListView

如果知道有什么事情已经做了我想做的事情,那就更好了?

这已经在本地画廊和安卓蜂巢3.1及以上的YouTube应用程序中实现。所以,如果有人有什么想法,请详细说明。

蜂窝画廊应用程序的快照:

蜂窝 YouTube应用程序快照:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-23 10:45:20

API 11中有setRotation,您必须将网格视图旋转90度,子视图旋转-90度。

文档:http://developer.android.com/reference/android/view/View.html#setRotation(float

更新:

要想在视图上获得3d效果,下面的APIs是很有用的

setCameraDistance(float) -设置z轴距离(深度)

setRotationX(float) -设置水平轴角

setRotationY(float) -设置垂直轴角

将摄像机的距离设置为屏幕高度的一半。然后根据视图在屏幕上的位置设置rotationX。旋转角度应该是从左到右的(20,10,0,-10,-20)。稍后,你可以玩rotationY角度,以获得一些高度感知。

在扩展GridView的overriden layout方法中执行所有设置。

代码语言:javascript
复制
@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.
    }
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11577153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档