How to hide a View programmatically?

JavaAndroid

Java Problem Overview


In my application, I have 2 LinearLayout's right above each other. Via a menu option, I want to be able to make the bottom one disappear, and have the top one drop down over the disappeared LinearLayout.

The problem is, I have no idea on how to do this in Java.

It doesn't have to be animated, I want to hide the Layout on return of another activity (the menu), in OnActivityResult. The menu activity sets a boolean on which I check in OnActivityResult, and according to it's value I determine if I need to hide or show the bottom Layout:

// Only change value if it is different from what it was.
if(mUseVolumeButtonAsPTT != resultData.getBoolean("UseVolumeButtonAsPTT")){
	mUseVolumeButtonAsPTT = resultData.getBoolean("UseVolumeButtonAsPTT");
	if(!mUseVolumeButtonAsPTT){
		// Hide lower LinearLayout.
	} else {
		// Show lower LinearLayout.
	}
}

Can anybody give me a hint or a link on how I should do this?

Java Solutions


Solution 1 - Java

You can call view.setVisibility(View.GONE) if you want to remove it from the layout.

Or view.setVisibility(View.INVISIBLE) if you just want to hide it.

From Android Docs: > INVISIBLE > > This view is invisible, but it still takes up space for layout purposes. Use with setVisibility(int) and android:visibility. > > GONE > > This view is invisible, and it doesn't take any space for layout purposes. Use with setVisibility(int) and android:visibility.

Solution 2 - Java

Try this:

linearLayout.setVisibility(View.GONE);

Solution 3 - Java

Kotlin Solution

view.isVisible = true
view.isInvisible = true
view.isGone = true

// For these to work, you need to use androidx and import:
import androidx.core.view.isVisible // or isInvisible/isGone

Kotlin Extension Solution

If you'd like them to be more consistent length, work for nullable views, and lower the chance of writing the wrong boolean, try using these custom extensions:

// Example
view.hide()

fun View?.show() {
    if (this == null) return
    if (!isVisible) isVisible = true
}

fun View?.hide() {
    if (this == null) return
    if (!isInvisible) isInvisible = true
}

fun View?.gone() {
    if (this == null) return
    if (!isGone) isGone = true
}

To make conditional visibility simple, also add these:

fun View?.show(visible: Boolean) {
    if (visible) show() else gone()
}

fun View?.hide(hide: Boolean) {
    if (hide) hide() else show()
}

fun View?.gone(gone: Boolean = true) {
    if (gone) gone() else show()
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionThaMe90View Question on Stackoverflow
Solution 1 - JavaErich DouglassView Answer on Stackoverflow
Solution 2 - JavaDRiFTyView Answer on Stackoverflow
Solution 3 - JavaGiboltView Answer on Stackoverflow