This is an old question that has already been accepted, but the following solution may help someone else:
If you check res/values/attrs.xml in Android source code, you'll see the definition of visibility property like this:
<!-- Controls the initial visibility of the view. -->
<attr name="visibility">
<!-- Visible on screen; the default value. -->
<enum name="visible" value="0" />
<!-- Not displayed, but taken into account during layout (space is left for it). -->
<enum name="invisible" value="1" />
<!-- Completely hidden, as if the view had not been added. -->
<enum name="gone" value="2" />
</attr>
This attribute expects a string value (visible, invisible, gone) that will be converted to (0, 1, 2) respectively. So, you can declare integer resources containing these values like this:
values/integers.xml
<integer name="visible_in_portrait">2</integer> <!-- This is GONE -->
values-land/integers.xml
<integer name="visible_in_landscape">0</integer> <!-- This is VISIBLE -->
However, if you want to make it even better in order to stop guessing these numeric constants every time, you could do like this:
values/integers.xml
<!-- These are alias for the constants we'll reference below -->
<integer name="view_visible">0</integer> <!-- This is VISIBLE -->
<integer name="view_invisible">1</integer> <!-- This is INVISIBLE -->
<integer name="view_gone">2</integer> <!-- This is GONE -->
<integer name="visible_in_portrait">@integer/view_gone</integer> <!-- We're referencing the visibility alias we declared above -->
values-land/integers.xml
<integer name="visible_in_landscape">@integer/view_visible</integer>
You can use this approach or the one suggested by Keyhan. Choose the one that fits you better.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…