Wie verstecke ich eine Schaltfläche programmgesteuert?

151

Ich habe eine, RelativeLayoutdie zwei Knöpfe enthält. Welche überlappen sich.

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

Ich möchte programmgesteuert jeweils nur eine Schaltfläche anzeigen, wenn das Klickereignis aufgerufen wird.

Ich habe es versucht mit:

playButton.setVisibility(1);

aber es hat nicht funktioniert. Das Folgende ist ein Beispiel, was ich versuche zu tun.

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
quelle

Antworten:

308

Sie können den folgenden Code verwenden:

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
quelle
2
Danke sunil :) Kannst du bitte den Unterschied zwischen View.VISIBLe und 1 erkennen (ist es nur eine Aufzählung)?
Vamsi Krishna B
1
Warum VisVisibility auf 1 setzen? Das ist keiner der konstanten Werte.
pqsk
4
Mit View.GONE nimmt das Element keinen Layoutplatz ein. View.INVISIBLE reserviert Platz für den Artikel. Dies ändert das Layout der Ansicht, wenn Sie die Sichtbarkeit umschalten.
GB96
77

Versuchen Sie den folgenden Code -

playButton.setVisibility(View.INVISIBLE);

oder -

playButton.setVisibility(View.GONE);

zeig es nochmal mit -

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

Bitte unten verwendet

View.GONE and View.VISIBLE
Nikhil
quelle
8

Versteckt:

BUTTON.setVisibility(View.GONE);

Show:

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

In Kotlin

myButton.visibility = View.GONE

Jungledev
quelle
4

Ich würde vorschlagen, dass Sie nur eine Schaltfläche verwenden, um den Text und das Verhalten der Schaltfläche bei Bedarf zu ändern. Das ist einfacher und sauberer als die Handhabung von zwei überlappenden Tasten.

@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
quelle
Ich mag deine Idee, es ist eigentlich das, was ich im iPhone mache, wenn ich eine einzelne Taste umschalte, um mehrere Dinge zu tun. Aber ich bin neu bei Android. Kannst du mir bitte ein Beispiel zeigen, wie das geht?
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
quelle
2

Bitte versuchen Sie Folgendes: playButton = (Button) findViewById(R.id.play); playButton.setVisibility(View.INVISIBLE);Ich denke, das wird es tun.

Basilikum
quelle
1

Für "Xamarin Android":

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

Kotlin-Code ist viel einfacher:

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