【问题标题】:Implementing ListView in home screen widget在主屏幕小部件中实现 ListView
【发布时间】:2012-05-03 13:58:39
【问题描述】:

如何用 ListView 之类的东西制作小部件。我已经使用 LinearLayout 做到了,但我不知道如何发现行数。 (我想知道使小部件能够分页的确切行数)

我希望它看起来像这样(photoshop 和 copypast):

注意事项:

  1. Android 2.3.4 及更低版本。
  2. 大小为 4x4 的小部件

更新和澄清:

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

【问题讨论】:

  • 您的 ListView 是否包含比显示更多的数据,或者您只是想覆盖整个 4x4 的壁纸?
  • 我在 ListView 有可用空间(最大 294)时动态填充它。我从公式 cellNumber*74 - 2 中取 294。我想覆盖整个 4x4 但不知道如何计算它的大小
  • 我没有过多地使用小部件,但 ListView 不会绘制项目,除非它们是可见的。看起来你在做不必要的工作。如果您只是将 ListView 与适配器绑定而不尝试将任何内容限制为 294dp,会发生什么?
  • 这是错误的。因为我只填充了 9 行或 294 dp 的屏幕。因为我不知道小部件的实际大小
  • @VenomVendor 我想填充主屏幕 4x4 单元格中的所有可用空间。

标签: android android-widget


【解决方案1】:

我不知道如何确定 dp 中 4x4 小部件的实际尺寸。似乎只有知道具体的设备才能确定。

您可以按固定的行数滚动。

【讨论】:

    【解决方案2】:

    我知道的唯一 3.0 之前的示例是 Google Code 上的 ScrollableContacts 项目。它在主屏幕小部件中具有可滚动列表,并从 2.1 开始工作。但是,该小部件需要更换家庭 - 请参阅项目描述。源码可以查看here

    【讨论】:

    • 您提供的解决方案不起作用,因为 294dp 只是请求主屏幕的 4x4 单元格。它不是小部件的实际大小。例如,我们有 800px/480px 和密度 160 的设备。通过公式“px = dp*(dpi/160)”,我们有实际高度 800 dp。不是 294dp。
    • 我已经编辑了我的答案,包括如何以像素为单位获取 dpi 和屏幕尺寸。
    • 只有当显示 4x4 并且所有主屏幕空间都分配给小部件时,您的解决方案才能工作。但实际上有很多设备的屏幕超过 4x4,而且在我看到的每台设备上,屏幕底部都有菜单按钮。所以我无法使用您的解决方案从屏幕尺寸计算小部件尺寸。
    • 你是对的。我已经删除了处理 dpi 计算的答案部分,因为我的解决方案仅适用于屏幕尺寸的子集。对不起,我不能提供更好的帮助:)
    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 2014-05-16
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多