¿Cómo ocultar un botón mediante programación?

151

Tengo un RelativeLayoutque contiene dos botones. Que se superponen entre sí.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF">


<Button android:text="Play"  
    android:id="@+id/play"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom = "true">
</Button>

<Button android:text="Stop "
    android:id="@+id/stop" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_alignParentBottom = "true">
</Button>


</RelativeLayout>

Quiero mostrar programáticamente solo un botón a la vez cuando se llama a su evento de clic.

Lo probé con:

playButton.setVisibility(1);

Pero no funcionó. El siguiente es un ejemplo de lo que estoy tratando de hacer.

playButton = (Button) findViewById(R.id.play);
playButton.setVisibility(1);
playButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        //when play is clicked show stop button and hide play button

    }
});
Rishi
fuente

Respuestas:

308

Puedes usar el siguiente código:

playButton = (Button) findViewById(R.id.play);
playButton.setVisibility(View.VISIBLE);
playButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        //when play is clicked show stop button and hide play button
        playButton.setVisibility(View.GONE);
        stopButton.setVisibility(View.VISIBLE);
    }
});
Sunil Kumar Sahoo
fuente
2
Gracias sunil :) ¿puedes decir la diferencia entre View.VISIBLe y 1 (es solo enumeración)?
Vamsi Krishna B
1
¿Por qué establecerVisibility a 1? Ese no es ninguno de los valores constantes.
pqsk
44
View.GONE hace que el elemento no ocupe ningún espacio de diseño. View.INVISIBLE reserva espacio para el artículo. Esto cambia el diseño de la vista cuando alterna la visibilidad.
gb96
77

Pruebe el siguiente código:

playButton.setVisibility(View.INVISIBLE);

o -

playButton.setVisibility(View.GONE);

mostrarlo de nuevo con -

playButton.setVisibility(View.VISIBLE);
Balaji.K
fuente
8

Por favor use abajo

View.GONE and View.VISIBLE
Nikhil
fuente
8

Hidde:

BUTTON.setVisibility(View.GONE);

Mostrar:

BUTTON.setVisibility(View.VISIBLE);
Alex Zaraos
fuente
5
public void OnClick(View.v)
Button b1 = (Button) findViewById(R.id.playButton);
b1.setVisiblity(View.INVISIBLE);
fhilo
fuente
5

En kotlin

myButton.visibility = View.GONE

jungledev
fuente
4

Te sugiero que solo uses un botón y cambies el texto y el comportamiento del botón a pedido. Eso es más fácil y más limpio que manejar dos botones que se superponen.

@Override
public void onClick(View v) {
    String curText = ((TextView)v).getText();                 

    if(curText.equals("Play")){
        ((TextView)v).setText("Stop");
    }

    if(curText.equals("Stop")){
        ((TextView)v).setText("Play");
    }
 }
Flo
fuente
i como su idea es en realidad lo que hago en el iPhone solo se mueve el botón de hacer múltiples things.But soy nuevo en Android, se puede complacer a punto de mí para un ejemplo de cómo hacer esto ..
Rishi
4
        Button button = (Button) findViewById(R.id.myButton);
        //set to visible
        button.setVisibility(View.VISIBLE);
        //set to invisble      
        button.setVisibility(View.INVISIBLE);
       //or
        button.setVisibility(View.GONE);
r3dm4n
fuente
2

Por favor, intente esto: playButton = (Button) findViewById(R.id.play); playButton.setVisibility(View.INVISIBLE);creo que esto lo hará.

Albahaca
fuente
1

Para "Xamarin Android":

FindViewById<Button>(Resource.Id.Button1).Visibility = ViewStates.Gone;
Matheus Miranda
fuente
1

El código de Kotlin es mucho más simple:

if(isVisable) {
    clearButton.visibility = View.INVISIBLE
}
else {
    clearButton.visibility = View.VISIBLE
}
Justin
fuente