#写在前面:
觉得简单可以不看,博客本来就是记录心得的地方。往往有些很简单的东西,要搞上半天,如果能对别人有借鉴作用,从大处说,也是节约了别人的时间,提供了思路。#
1、想要的效果:按设定的透明按钮点击下一步,先要显示一个图片,然后在下方出现一个行文字(也是一个线性布局)。继续点击,下方那行布局不变,图片切换(即让本来的图片gone,另外的一个图片出现并visible)。(之后的动画省略)
2、解决时间:花了近1天
3、具体:
3-1 我有一个图片A和一行文字(含在线性布局里的textview),在XML视图中是无误的。按动画顺序,要先出来图片A,再出来B
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里的属性也不会再起作用。