gpt4 book ai didi

android - 从 listView 中删除标题

转载 作者:IT老高 更新时间:2023-10-28 22:23:28 26 4
gpt4 key购买 nike

我在尝试从 listView 中删除标题时遇到了一些问题。起初我使用 addHeaderView() 添加它,但是当我更改为另一个布局时,我希望它消失,但 removeHeaderView() 不起作用...

我还尝试将可见性设置为 GONE,但它并没有消失...

我能做什么?

提前致谢

最佳答案

试试下面提到的方法..

Android ListView#addHeaderViewListView#addFooterView 方法很奇怪:你必须在设置 ListView 的适配器之前添加页眉和页脚 View ,以便 ListView 可以接受考虑页眉和页脚——否则你会得到一个异常(exception)。这里我们添加一个 ProgressBar(微调器)作为 headerView:

//微调器是一个进度条

listView.addHeaderView(spinner);

我们希望能够随意显示和隐藏该微调器,但直接删除它是危险的,因为如果不破坏 ListView,我们将永远无法再次添加它——记住,我们不能在之后添加HeaderView我们有它的适配器:

listView.removeHeaderView(spinner); //dangerous!

所以让我们隐藏它!事实证明这也很难。只是隐藏微调器 View 本身会导致一个空的但仍然可见的标题区域。

现在尝试隐藏微调器:

spinner.setVisibility(View.GONE);

结果:标题区域仍然可见,带有难看的空间:

解决方案是将进度条放在包装其内容的 LinearLayout 中,并隐藏内容。这样,包装的 LinearLayout 将在其内容被隐藏时折叠,导致 headerView 在技术上仍然存在,但 0dip 高:

<LinearLayout 
xmlns:a="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<!-- simplified -->
<ProgressBar
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>

然后,将布局设置为页眉:

spinnerLayout = getLayoutInflater().inflate(R.layout.header_view_spinner, null);
listView.addHeaderView(spinnerLayout);

当我们需要隐藏它时,隐藏布局的内容,而不是布局:

spinnerLayout.findViewById(R.id.spinner).setVisibility(View.GONE);

现在标题从 View 中消失了。顶部不再有丑陋的空间!

关于android - 从 listView 中删除标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13603888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com