Android中ImageView调用setVisibility(View.GONE)不生效仍留空白区域问题
问题原因
- 空判断逻辑错误:你当前使用
if(url == "null")判断空有两处错误:- Java中对比字符串内容不能用
==,==对比的是字符串对象的内存地址,只有两个字符串是同一个对象时才会返回true,对比内容需要使用equals()方法 - 你仅判断了URL为字符串
"null"的场景,没有处理URL是真null对象、空字符串的场景,这时候GONE逻辑根本不会触发,所以ImageView还会占用空间
- Java中对比字符串内容不能用
- 额外排查点:如果你是在RecyclerView/ListView的item布局中使用该ImageView,还需要检查item根布局的高度是否设置为固定值,若根布局高度固定,就算内部ImageView设为GONE,item整体高度不变,也会出现空白区域
修复方案
- 修正Java逻辑中的空判断代码:
url = list.get(position).getImageUrl(); // 覆盖所有空场景:null对象、内容为"null"的字符串、空字符串/全空格字符串 if(url == null || url.trim().equals("null") || url.trim().isEmpty()) { imageView.setVisibility(View.GONE); } else { imageView.setVisibility(View.VISIBLE); Glide.with(DisplayQuestions.this) .load(url) .into(imageView); }
- 如果是列表item场景,将item根布局的高度属性改为
wrap_content即可。
内容的提问来源于stack exchange,提问作者Lav Sharma
相关产品推荐
相关产品推荐

