Android:将可见设置为在运行时消失会留下一个空白空间

Posted

技术标签:

【中文标题】Android:将可见设置为在运行时消失会留下一个空白空间【英文标题】:Android : setting visible to gone at runtime leaves an empty space 【发布时间】:2014-07-20 23:43:25 【问题描述】:

如图所示,我的列表视图中有布局 A。考虑每个正方形右上角的按钮。如果我们点击它,它将隐藏RelativeLayout,即将其可见性设置为消失。

holder.imgBtn= (ImageView) convertView.findViewById(R.id.imgBtn);
    holder.rLayout = (RelativeLayout) convertView.findViewById(R.id.rLayout);
    convertView.setTag(holder);

holder.imgBtn.setOnClickListener(new OnClickListener() 

    @Override
    public void onClick(View v)  
        holder.rLayout.setVisibility(View.GONE);
    
); 

但是为什么还有空格呢?

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ibutton="http://schemas.android.com/apk/res-auto"
    android:id="@+id/rLayout"
    android:layout_
    android:layout_ 
    android:orientation="vertical"
    android:paddingBottom="5dp" >


 //some code



</RelativeLayout >

【问题讨论】:

贴代码sn-p ? 您是把列表视图项目的 1 部分放到 GONE 还是整个项目?我不认为 listview 是为了让你可以将一个项目设置为不可见(尽管如果一个项目有多个子视图,这些子视图可以设置为消失)。 检查活动 xml 中的其他视图 layout_height 通知您的适配器进行更改..它将删除该空白 @MeenalSharma 它不会改变任何东西。见 Gabe Sechan 的评论。 【参考方案1】:

这里可能的解决方案:Android: How to hide a ListView Item

我最终做的是在 xml 中创建一个“空项目”布局,并根据我的标准而不是 getView() 中的转换视图返回它...

我没有返回 convertView,而是返回了我的 null_item...

return inflater.inflate(R.layout.null_item, null);
null_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_ >

</LinearLayout>

也就是说,您最好从列表中删除该项目并更新您的数据集。这可能更容易。

【讨论】:

以上是关于Android:将可见设置为在运行时消失会留下一个空白空间的主要内容,如果未能解决你的问题,请参考以下文章

当它们移动以填充其他淡出的 div 留下的空白空间时如何为 div 设置动画

如果列表项为空,则将可见性设置为消失

回到应用程序时,Android 后台活动消失

使用 cmd/schtasks 将任务设置为在系统启动时运行

Android:隐形和消失的区别?

如何在没有管理员权限的情况下使用 vbs 将任务设置为在登录时以当前用户身份运行?