【问题标题】:Resizing list items in a ListView在 ListView 中调整列表项的大小
【发布时间】:2014-03-25 17:50:33
【问题描述】:

有没有一种优雅的方式来询问 ListView 屏幕上当前有多少列表项?

或者反过来:是否可以告诉 ListView 使其列表项(通过增加它们的高度)大到恰好 n 个项目适合屏幕?在我的例子中,列表项是简单的 TextViews。

【问题讨论】:

    标签: java android listview textview height


    【解决方案1】:

    您可以使用list.getLastVisiblePosition() 并减去list.getFirstVisiblePosition()

    int count = list.getLastVisiblePosition() - list.getFirstVisiblePosition();  
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      最简单的方法是获取您的ListView 高度并创建您自己的视图,并将其测量为listView.getHeight()/N(其中 n 是您希望一次在屏幕上显示的视图数)。

      【讨论】:

      • 哦,你是对的。这真的很容易。我在覆盖的getView 方法中尝试了textView.setHeight(parent.getHeight() / n);。但这不能正常工作。也许我必须考虑分隔符? TextViews 略高。
      • @principal-ideal-domain 你需要等到 ListView 被正确测量或者你需要先自己测量。您可以使用 GlobalLayoutListener 完成前者,后者通过创建 MeasureSpec 并自己调用 measure 后跟 getHeight()
      • @principal-ideal-domain 我也意识到我可能误解了您的问题,您是说 getHeight() 返回的值比您预期的要大(例如 getHeight()/n 也更大超出预期)?如果是这样,为什么不尝试在 textView 上设置最大高度或其他内容,或者您​​可能需要使用自己的视图,您可以强制使其成为您想要的大小。
      • ListView 的项目之间有一条直线,将这些项目彼此分开。我认为这条线不属于项目本身。因此,ListView 的总高度计算为项目的高度加上分隔线的高度。 textView.setHeight((parent.getHeight() / numberOfItems) - 2); 对我来说效果很好,但也许有一种方法可以直接访问这些行的高度。
      猜你喜欢
      • 2011-02-19
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 2013-07-24
      • 2018-01-24
      • 1970-01-01
      相关资源
      最近更新 更多