Comment masquer un bouton par programmation?

152

J'ai un RelativeLayoutqui contient deux boutons. Qui se chevauchent.

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

Je souhaite afficher par programme un seul bouton à la fois lorsque son événement de clic est appelé.

Je l'ai essayé avec:

playButton.setVisibility(1);

mais cela n'a pas fonctionné. Voici un exemple de ce que j'essaie de faire.

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
la source

Réponses:

308

Vous pouvez utiliser le code suivant:

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
la source
2
Merci sunil :) pouvez-vous s'il vous plaît faire la différence entre View.VISIBLe et 1 (est-ce juste enum)?
Vamsi Krishna B
1
Pourquoi définirVisibility sur 1? Ce n'est pas l'une des valeurs constantes.
pqsk
4
View.GONE fait que l'élément n'occupe aucun espace de mise en page. View.INVISIBLE réserve de l'espace pour l'article. Cela modifie la disposition de la vue lorsque vous basculez la visibilité.
gb96
77

Essayez le code ci-dessous -

playButton.setVisibility(View.INVISIBLE);

ou -

playButton.setVisibility(View.GONE);

le montrer à nouveau avec -

playButton.setVisibility(View.VISIBLE);
Balaji.K
la source
8

Veuillez utiliser ci-dessous

View.GONE and View.VISIBLE
Nikhil
la source
8

Hidde:

BUTTON.setVisibility(View.GONE);

Spectacle:

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

À Kotlin

myButton.visibility = Afficher.GONE

jungledev
la source
4

Je vous suggère de n'utiliser qu'un seul bouton pour modifier le texte et le comportement du bouton à la demande. C'est plus facile et plus propre que de manipuler deux boutons qui se chevauchent.

@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
la source
J'aime votre idée, c'est en fait ce que je fais dans l'iphone en basculant un seul bouton pour faire plusieurs choses.Mais je suis nouveau sur Android, pouvez-vous s'il vous plaît me montrer un exemple sur la façon de faire cela ..
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
la source
2

Veuillez essayer ceci: playButton = (Button) findViewById(R.id.play); playButton.setVisibility(View.INVISIBLE); je pense que cela le fera.

Basilic
la source
1

Pour «Xamarin Android»:

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

Le code Kotlin est beaucoup plus simple:

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