【问题标题】:ListView - Set Minimum Height so that it always allows ScrollingListView - 设置最小高度,使其始终允许滚动
【发布时间】:2011-02-05 11:39:46
【问题描述】:

我目前正在 Android 中实现 Pull To Refresh 功能。现在,我通过使用列表项上方的标题视图创建自定义 ListView 来使其工作。本质上:当顶部标题视图在视图中时,通过侦听器启动刷新。

在启动 ListView 时,它会自动滚动到 HeaderViews 下方,隐藏它们直到用户向下滚动。这在 List Items 的高度超过 ListView 本身的高度(因此存在滚动)时效果很好,但是当 Children 的高度小于 ListView 的高度时,没有滚动并且 HeaderViews 被强制显示.

基本上我所追求的是一种强制 ListView 的滚动区域至少是 ListView 的高度 + 我的 HeaderViews 的高度的方法。我已经获得了 HeaderViews 的高度,只是找不到获取 ListView 实际高度的方法(即使用 fill_parent 时)以及设置最小滚动高度的方法。有什么想法吗?

我完成后将在 GitHub 上发布,适用于 Android 1.5+。

【问题讨论】:

  • 只是表示感谢您发布 GitHub 的说明。节省了我必须解决 Nilsson 实施的所有问题的时间!干杯。

标签: android listview scroll


【解决方案1】:

我自己通过添加一个足够大的footerView来解决这个问题:

final int numberHeaderViewsForPullToRefresh = 2;


@Override
protected void onSizeChanged(int w, final int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    if (this.getCount() > numberHeaderViewsForPullToRefresh) {

        // This is from Droid-Fu. Converts dip to px
        final int size = DisplaySupport.dipToPx(getContext(), 60);
        int childViewHeight = (this.getCount() - numberHeaderViewsForPullToRefresh) * size;

        Utils.writeLog("Child Views Height: " + childViewHeight);

        if (childViewHeight < h) {
            this.removeFooterView(footerPad);
            footerPad.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, h - childViewHeight));
            this.addFooterView(footerPad, null, false);
        }
    }

}

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题,但完全解决了……

    我没有为列表视图设置任何页眉或页脚,而是将列表项总数增加了 2

    说我有 10 个列表项,然后我的列表显示 12 个视图..

    在适配器 getView() 方法中膨胀视图时,我检查位置并为第一个和最后一个位置膨胀页眉和页脚视图。为了休息,我在列表项上应用我需要的视图..这对我来说肯定是解决方案。

    它也可以检查下面的链接,我写了一个代码来正确使用列表视图。

    Change ListView background - strange behaviour

    在这段代码中,你会发现一个 getView 方法使它为页眉、页脚和休息列表膨胀不同的视图

    如果你这样做了,那没关系,否则我会多加一点。

    【讨论】:

    • 我不确定这如何回答我的问题。问题是当我的列表中只有一两个项目时,列表不够长,无法滚动,因此总是显示。我需要扩展列表,以便列表有足够的空间来滚动和隐藏标题视图。
    • 这个解决方案实际上会使页眉和页脚沿列表视图滚动。好的,所以你想要滚动项目较少的列表?
    • HeaderViews 可以在您通过addHeaderView 添加它们时滚动。我希望 ListView 始终滚动。
    • 实现 TouchEvent 监听器并应用核心动画.. 将此作为最后一扇打开的大门
    猜你喜欢
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2020-12-08
    • 2023-03-19
    相关资源
    最近更新 更多