在ListView中隐藏页脚

时间:2011-09-27 21:50:21

标签: android listview

当我的Activity加载时,我膨胀了一个用于页脚的布局文件。我将它附加到ListView(addFooterView),然后将其可见性设置为View.GONE。我保留了对它的引用,当我希望用户看到它时,我将可见性设置为View.VISIBLE。

在大多数情况下,这很有效。然而,页脚似乎仍占用空间。如果用户使用滚轮/打击垫,则页脚占用的区域会突出显示。我想更多地打磨它,以便页脚完全消失;理想情况下,不要将其从ListView中删除。

这可能吗?或者我是否必须设置/取消设置脚而不是简单地切换其可见性?

4 个答案:

答案 0 :(得分:9)

您可以使用listView.removeFooterView(view)。最简单的方法是创建一个实例变量来保存膨胀的页脚视图(因此您只需在onCreate()中对其进行充气)。然后根据需要调用listView.addFooterView(instanceFooter)listView.removeFooterView(instanceFooter)

编辑: 以下是我正在做的工作:

  1. onCreate
  2. 中填充页脚布局
  3. onResume: IF 尚未实例化适配器,请调用addFooterView()然后初始化适配器(保留对它的实例引用)并调用setAdapter()。这将留下ListView“准备好”
  4. onResume:用数据更新适配器(我将我的数据放在一个单独的类中)并调用notifyDatasetChanged()
  5. 调用removeFooterView()(如果正在显示则隐藏它,否则不执行任何操作)
  6. 如果需要显示页脚,请致电addFooterView()

答案 1 :(得分:2)

您可以切换可见性。为此,您需要使用线性布局包装页脚的内容,然后将linearlayout可见性设置为GONE。

在下面的例子中,我将LogoLinearLayout的可见性设置为GONE并且它有效。

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:id="@+id/LogoLinearLayout"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <ImageView
                android:id="@+id/Logo"
                android:src="@drawable/Logo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/spacing3"
                android:layout_marginBottom="@dimen/spacing3"
                android:layout_gravity="center" />
        </LinearLayout>
    </LinearLayout>

答案 2 :(得分:-1)

当您调用addFooterView以禁用页脚选择并突出显示时,将isSelectable参数设置为false

答案 3 :(得分:-2)

尝试使用View.INVISIBLE而不是View.GONE。 (我没试过,但它可能会奏效)