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

    }
});

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

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

8

Veuillez utiliser ci-dessous

View.GONE and View.VISIBLE

8

Hidde:

BUTTON.setVisibility(View.GONE);

Spectacle:

BUTTON.setVisibility(View.VISIBLE);

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


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

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


2

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


1

Pour «Xamarin Android»:

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

1

Le code Kotlin est beaucoup plus simple:

if(isVisable) {
    clearButton.visibility = View.INVISIBLE
}
else {
    clearButton.visibility = View.VISIBLE
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.