android gone 空白,android:visibility="gone" (动画布局入的一次坑)

#写在前面:

觉得简单可以不看,博客本来就是记录心得的地方。往往有些很简单的东西,要搞上半天,如果能对别人有借鉴作用,从大处说,也是节约了别人的时间,提供了思路。#

1、想要的效果:按设定的透明按钮点击下一步,先要显示一个图片,然后在下方出现一个行文字(也是一个线性布局)。继续点击,下方那行布局不变,图片切换(即让本来的图片gone,另外的一个图片出现并visible)。(之后的动画省略)

2、解决时间:花了近1天

3、具体:

3-1  我有一个图片A和一行文字(含在线性布局里的textview),在XML视图中是无误的。按动画顺序,要先出来图片A,再出来B

397c02b361dd912b8d651a2f288287fc.png

3-2  问题是,实际中,当按下一步,图片A出来后,接着下一步,文字并没有出来,中间空了一大块。(我在图片A后又加了一个图片B,并把B设置为android:visibility="gone")

3-3 经过多次XML中对其他布局控件的增加修改,然后文字那行布局是出现了,但是中间留有很大一片空白。(最终确定出现问题的地方定在B,把B的height调小后,文字可以出来,因此断定是B占用了空间,但是我已经设置为gone了,不可能还会占空间。)

3-4 最后,找到了原因。 因为一直只盯在布局这里,我也确定了布局是没有问题的。然后我开始从项目代码上找原因,复制了一下B布局的ID,直接在其对应的类中ctrl+f,搜索这个id 。找到了下方这行代码。 原来如此,确实是很简单的一个问题。

fenhongjinall= (LinearLayout) findViewById(R.id.fenhongall);

fenhongjinall.setVisibility(View.INVISIBLE);

即我在XML里设置了B为android:visibility="gone",按道理来说它应该不占空间而完全隐藏。但是我在类文件代码里,由于代码复用的疏忽,加入了这行代码  B.setVisibility(View.INVISIBLE) ,invisible的区别在于虽然隐藏,但是会占用控件原来的空间.

因此,这也印证了程序会以类文件中的代码设置为准,当你设置了setVisibility(View.INVISIBLE),如果在对应XML中设置GONE,XML里的属性也不会再起作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值