Come nascondere un pulsante a livello di codice?


152

Ho un RelativeLayoutche contiene due pulsanti. Che si sovrappongono l'uno sull'altro.

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

Voglio mostrare a livello di programmazione solo un pulsante alla volta quando viene chiamato il suo evento click.

L'ho provato con:

playButton.setVisibility(1);

ma non ha funzionato. Di seguito è riportato un esempio di ciò che sto cercando di fare.

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

    }
});

Risposte:


308

Puoi usare il seguente codice:

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
Grazie sunil :) puoi per favore dire la differenza tra View.VISIBLe e 1 (è solo enum)?
Vamsi Krishna B,

1
Perché impostareVisibility su 1? Non è uno dei valori costanti.
pqsk

4
View.GONE fa in modo che l'elemento non occupi spazio nel layout. View.INVISIBLE si riserva spazio per l'articolo. Ciò modifica il layout della vista quando si attiva / disattiva la visibilità.
gb96,

77

Prova il codice qui sotto -

playButton.setVisibility(View.INVISIBLE);

o -

playButton.setVisibility(View.GONE);

mostralo di nuovo con -

playButton.setVisibility(View.VISIBLE);

8

Si prega di utilizzare di seguito

View.GONE and View.VISIBLE

8

Hidde:

BUTTON.setVisibility(View.GONE);

Mostrare:

BUTTON.setVisibility(View.VISIBLE);

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


4

Suggerirei di utilizzare un solo pulsante per modificare il testo e il comportamento del pulsante su richiesta. È più facile e più pulito rispetto alla gestione di due pulsanti che si sovrappongono.

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

mi piace la tua idea è proprio quello che faccio in iPhone attivando / disattivando il pulsante singolo per fare più cose. Ma sono nuovo per Android, puoi indicarmi un esempio su come farlo ...
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

Per favore prova questo: playButton = (Button) findViewById(R.id.play); playButton.setVisibility(View.INVISIBLE);penso che questo lo farà.


1

Per "Xamarin Android":

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

1

Il codice di Kotlin è molto più semplice:

if(isVisable) {
    clearButton.visibility = View.INVISIBLE
}
else {
    clearButton.visibility = View.VISIBLE
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.