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

    }
});

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);
    }
});

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);

8

Por favor, use abaixo

View.GONE and View.VISIBLE

8

Hidde:

BUTTON.setVisibility(View.GONE);

Mostrar:

BUTTON.setVisibility(View.VISIBLE);

5
public void OnClick(View.v)
Button b1 = (Button) findViewById(R.id.playButton);
b1.setVisiblity(View.INVISIBLE);


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");
    }
 }

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);


2

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


1

Para "Xamarin Android":

FindViewById<Button>(Resource.Id.Button1).Visibility = ViewStates.Gone;

1

O código Kotlin é muito mais simples:

if(isVisable) {
    clearButton.visibility = View.INVISIBLE
}
else {
    clearButton.visibility = View.VISIBLE
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.