在主屏幕小部件中实现ListView

10
如何使用类似ListView的控件制作小部件。我使用LinearLayout制作了它,但不知道如何发现行数。(我想知道确切的行数,以便使小部件能够分页)

我希望它看起来像这样(使用Photoshop和复制粘贴):

enter image description here

注意:

  1. Android 2.3.4及以下版本。
  2. 4x4大小的小部件

更新和澄清:

当我说“可滚动”时,我的意思是通过单击上下按钮进行滚动(您可以在屏幕截图中看到),即分页。


你的ListView是否包含比显示更多的数据,或者你只是想覆盖整个4x4的壁纸? - Sam
我在ListView中动态填充数据,同时保持其最大空间为294。我从公式cellNumber*74 - 2中取得了294的值。我想要填满整个4x4的空间,但不知道如何计算其大小。 - karabara
我没有太多使用小部件的经验,但是ListView不会绘制不可见的项目。这似乎是在做不必要的工作。如果您只是将ListView与适配器绑定而不尝试将任何内容限制为294dp,会发生什么? - Sam
1
这是错误的。因为我只填充了屏幕的9行或294 dp。因为我不知道小部件的实际大小。 - karabara
1
@VenomVendor,我想填满主屏幕4x4单元格中所有可用的空间。 - karabara
显示剩余3条评论
2个回答

2
我不知道如何确定4x4小部件的实际大小(以dp为单位)。似乎只有了解具体设备才能确定。
您可以按固定行数滚动。

1
我所知道的唯一一个3.0之前的带源代码示例是Google Code上的ScrollableContacts项目。它在主屏幕小部件中提供了可滚动列表,并且可以在2.1版本上运行。但是,该小部件需要一个主屏幕替代品-请参阅项目说明。源代码可以在这里查看。

1
你提供的解决方案不起作用,因为294dp只是主屏幕4x4单元格的请求,而不是小部件的实际大小。例如,我们有一个800px/480px和密度为160的设备。根据公式“px = dp *(dpi / 160)”,我们实际高度为800 dp,而不是294dp。 - karabara
我已经编辑了我的答案,包括如何获取dpi和屏幕像素大小。 - Gunnar Karlsson
1
你的解决方案只有在显示4x4的情况下才能起作用,并且所有主屏幕空间都被小部件占据。但实际上,有很多设备具有超过4x4的屏幕,并且在我看到的每个设备上,屏幕底部都有菜单按钮。因此,我无法使用你的解决方案从屏幕大小计算小部件大小。 - karabara
你说得对。我已经删除了我的答案中处理dpi计算的部分,因为我的解决方案只适用于屏幕尺寸的子集。很抱歉我不能提供更好的帮助:) - Gunnar Karlsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接