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

2023-11-26

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

通过水平滚动,我的意思是它应该以这种方式构建,而不是放在一个HorizontalScrollView.

我的会是Custom GridView将有固定数量的rows say 4-5columns应该extensible根据中的项目数量Adapter。你可以把它想象成与原生的相反GridView确实如此,但它应该保持功能。

我查看了源代码如何GridView是由谷歌实现的,但我能理解的很少,并开始制作View从头开始似乎不是一个好主意,因为我担心我无法像谷歌那样公正地对待内存优化。

我观察到GridView延伸AbsListView,所以我的问题是,是吗?AbsListView这让GridView垂直滚动并从适配器添加项目,或者是GridView这增加了垂直滚动能力?我应该调整一下吗GridView or AbsListView?

最好知道是否有一些东西已经可以做我想做的事情了?

这已经在 Android Honeycomb 3.1 及更高版本的原生 Gallery 和 YouTube 应用中实现。因此,如果有人有想法,请详细说明。

Honeycomb Gallery 应用程序快照:

enter image description here

Honeycomb YouTube 应用程序的快照:

enter image description here


setRotation在 API 11 中。您必须将 gridview 旋转 90 度,将子视图旋转 -90 度。

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

Update:

要在视图上获得 3D 效果,遵循 API 会很有用

设置相机距离(浮动)- 设置z轴距离(深度)

setRotationX(浮动)- 设置水平轴角度

设置旋转Y(浮动)- 设置垂直轴角度

将相机距离设置为屏幕高度的一半。然后根据视图在屏幕上的位置设置旋转X。旋转角度从左到右应类似于 (20, 10, 0, -10, -20)。稍后您可以使用旋转 Y 角度来获得一些高度感知。

在扩展中进行所有设置GridView被覆盖layout method.

@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.
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 GridView 的行为以使其水平滚动而不是垂直滚动 的相关文章

随机推荐

  • Laravel - artisan down /维护模式除了自己的IP

    目前我正在使用 Laravel5 我的问题是如果我使用维护模式 php artisan down 怎么能说 除了我自己的 IP 之外 每个人的应用程序都已关闭 所以每个人都看到维护模式 但我仍然可以访问该网站 现在你可以使用php arti
  • 在文本区域内显示div

    我希望在文本区域中显示 html 是否可以显示一个 div a 内包含表单元素 div
  • 具有链式方法的 Java 方法调用顺序

    给出的是以下 Java 代码示例 builder something somethingElse somethingMore builder getSomething Java 语言规范是否保证getSomething 被调用after t
  • 如何获得句子文本中二元组的概率?

    我有一篇文章 其中有很多句子 我该如何使用nltk ngrams来处理它 这是我的代码 sequence nltk tokenize word tokenize raw bigram ngrams sequence 2 freq dist
  • “ng-reflect-*”属性在 Angular2/4 中起什么作用?

    这里我在 Angular4 应用程序中有一个复杂的数据结构 它是一个有向多重图 在节点和链接上都用字典进行参数化 我的角度组件正在研究这个复杂的数据模型 在 Angular2 4 中 一切正常 自从我们切换到 Angular4 后 我将其添
  • 如何优化 llvm 链接时间

    我编译一个 C 程序 例如使用以下代码 clang O4 emit llvm file1 cpp c o file1 bc clang O4 emit llvm file2 cpp c o file2 bc llvm link file1
  • Django:更新数据库架构而不丢失数据

    如果我想升级 更改 我的数据库架构 通过将新字段添加到 Django 模型中来将新字段添加到表中 而不丢失这些表中的数据 最好的解决方案是什么 syncdb 当然不会添加它们 所以我需要您的建议如何更改表而不删除它们并使用syncdb再次重
  • 使用侧列表托盘嵌入 YouTube 播放列表

    我一直在使用 javascript 使用 youtube 嵌入播放列表功能 到目前为止 当我嵌入播放列表时 它看起来像这样 http postimage org image vk6fv56yx 蓝色圆圈显示播放列表中的项目数 单击时会显示缩
  • 如何仅比较 EF 中 DateTime 的日期组件?

    我有两个日期值 一个已存储在数据库中 另一个由用户使用 DatePicker 选择 用例是从数据库中搜索特定日期 先前在数据库中输入的值始终具有 12 00 00 的时间部分 而从选择器输入的日期具有不同的时间部分 我只对日期部分感兴趣 想
  • 如何使用 root 在 Android 4.2 及更高版本上切换飞行模式?

    众所周知 在 Android 4 2 上 只有系统应用程序可以切换飞行模式 但我认为它必须适用于 root 设备 我想在我的应用程序中将其实现为具有 Build VERSION SDK INT gt 17 的 root 设备 如何在 And
  • 根据一组关键字进行搜索

    我需要根据一组关键字进行搜索 返回与这些关键字相关的所有广告 然后结果是一个类别列表 其中包含每个类别的广告计数 搜索是在 KeywordSearch 表中进行的 public class KeywordSearch public int
  • 我可以在不使用 Array 构造函数或数组文字的情况下创建 Array.isArray() 返回 true 的对象吗?

    我可以通过将其原型设置为轻松使普通对象看起来像数组Array prototype const obj Reflect setPrototypeOf obj Array prototype 我知道魔法也存在一些问题length属性和稀疏数组
  • 使用 UIScreenEdgePanGestureRecognizer 而不移动 MKMapView

    我有一个包含 MKMapView 的 UIViewController 事实上 它包含一个包含 MKMapView 的全屏容器 但它不应该有任何影响 我实现了一个 UIScreenEdgePanGestureRecognizer 以显示抽屉
  • Quantmod add_TA 和 Chart_Series 出现问题 - 调用下一个 add_TA 后线条和文本消失

    我正在使用新的chart Series and add TA非常多 它对我来说非常有效 我发现它非常有用 我正在尝试在图表上添加一些内容 水平线和一些文本 这里开始出现问题 正确绘制水平线和文本后 如果我调用后续命令 它们就会消失add T
  • Cassandra控制SSTable大小

    有没有办法控制 SSTable 的最大大小 例如 100 MB 这样当 CF 实际上有超过 100MB 的数据时 Cassandra 就会创建下一个 SSTable 不幸的是 答案并不那么简单 SSTable 的大小将受到压缩策略的影响 并
  • C语言中的限定符是什么?

    我正在这个网址阅读一些文字 https cs senecac on ca btp100 pages content varia p html 在 限定符 部分中 他们说 我们可以限定 int 类型以确保它包含最少位数 Short 至少包含
  • 在 ANSI C 中正确声明 main() 函数 [重复]

    这个问题在这里已经有答案了 C标准说 程序启动时调用的函数 被命名为主 实施情况 没有为此声明原型 功能 它应定义为 返回类型为 int 并且没有 参数 int main void 或带有两个参数 参考 这里作为 argc 和 argv 尽
  • 如何在 Isabelle/jEdit 中启用“跟踪”

    I m a vim风扇 但仅emacs有这个 Isabelle HOL 环境 jEdit很棒 但我不能使用 using simp trace true like in emacs 如何启用 跟踪 jEdit 你确实可以使用simp trac
  • 将函数应用于多维数组:R 与 MATLAB

    这个问题可以被认为与this one 这帮助我提高了 R 在计算大数组平均值时的性能 不幸的是 在这种情况下 我尝试应用更复杂的东西 例如分位数计算 我有一个包含超过 4000 万个元素的 4 维数组 我想计算特定维度上的第 66 个百分位
  • 更改 GridView 的行为以使其水平滚动而不是垂直滚动

    我想做一个UI像一个元素GridView 我希望它具有完整的功能 但希望它可以水平滚动而不是垂直滚动 通过水平滚动 我的意思是它应该以这种方式构建 而不是放在一个HorizontalScrollView 我的会是Custom GridVie