Como ocultar um botão programaticamente?

151

Eu tenho um RelativeLayoutque contém dois botões. Que se sobrepõem.

<?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>

Desejo mostrar programaticamente apenas um botão por vez quando o evento click é chamado.

Eu tentei com:

playButton.setVisibility(1);

mas não deu certo. A seguir, é apresentado um exemplo do que estou tentando fazer.

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
fonte

Respostas:

308

Você pode usar o seguinte 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
fonte
2
Obrigado sunil :) você pode dizer a diferença entre View.VISIBLe e 1 (é apenas enum)?
Vamsi Krishna B
1
Por que setVisibility como 1? Esse não é um dos valores constantes.
pqsk
4
O View.GONE faz com que o item não ocupe espaço no layout. View.INVISIBLE reserva espaço para o item. Isso altera o layout da exibição quando você alterna a visibilidade.
GB96
77

Experimente o código abaixo -

playButton.setVisibility(View.INVISIBLE);

ou -

playButton.setVisibility(View.GONE);

mostre novamente com -

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

Por favor, use abaixo

View.GONE and View.VISIBLE
Nikhil
fonte
8

Hidde:

BUTTON.setVisibility(View.GONE);

Mostrar:

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

Na cidade Kotlin

myButton.visibility = View.GONE

jungledev
fonte
4

Eu sugiro que você use apenas um botão e altere o texto e o comportamento no botão sob demanda. É mais fácil e limpo do que lidar com dois botões sobrepostos.

@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
fonte
Eu gosto da sua ideia sua, na verdade, o que eu faço no iphone alternando único botão para fazer múltipla things.But Eu sou novo para android, você pode por favor me aponte para um exemplo de como fazer isso ..
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
fonte
2

Por favor, tente o seguinte: playButton = (Button) findViewById(R.id.play); playButton.setVisibility(View.INVISIBLE);Eu acho que isso fará isso.

Manjericão
fonte
1

Para "Xamarin Android":

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

O código Kotlin é muito mais simples:

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