Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Under which circumstance should INVISIBLE used instead of GONE? [closed]

Tags:

android

For a View that is sometimes visible and sometimes not, depending on the user's actions, (staying in the same activity) what is prefereable?

myView.setVisibility(View.INVISIBLE); // or
myView.setVisibility(View.GONE);

No other element depends on myView's size or dimensions, so the graphical result is the same.

As INVISIBLE doesn't change the view's dimensions, I guess it's more preferable than GONE because with GONE we possibly have to measure and redraw other views unnecessarily. And then re-measure and re-draw them when myView is made VISIBLE again.

like image 777
minipif Avatar asked Mar 19 '13 17:03

minipif


1 Answers

You're on the right track thinking about the impact on measuring. Which one is more efficient all depends on how frequently you are changing the view's visibility.

For example, if the view is not visible for a majority of the time, making it GONE would probably be more efficient, because the system would not be needlessly measuring and laying out your invisible view whenever it needs to adjust other views on the screen.

On the other hand, if the view changes between visible and invisible frequently, you might get better performance from INVISIBLE as you would potentially avoid an extra measure/layout on each transition.

like image 74
Scott W Avatar answered Nov 15 '22 12:11

Scott W