Bagaimana cara menyembunyikan tombol secara terprogram?

151

Saya punya RelativeLayoutyang berisi dua tombol. Yang saling tumpang tindih.

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

Saya ingin secara program hanya menampilkan satu tombol pada suatu waktu ketika acara kliknya dipanggil.

Saya mencobanya dengan:

playButton.setVisibility(1);

tetapi tidak berhasil. Berikut ini adalah contoh apa yang saya coba lakukan.

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
sumber

Jawaban:

308

Anda dapat menggunakan kode berikut:

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
sumber
2
Terima kasih sunil :) dapatkah Anda memberi tahu perbedaan antara View.VISIBLe dan 1 (hanya enum)?
Vamsi Krishna B
1
Mengapa setVisibility ke 1? Itu bukan salah satu dari nilai konstan.
pqsk
4
View.GONE membuat item tidak memakan ruang tata letak apa pun. View.INVISIBLE menyediakan ruang untuk item. Ini mengubah tata letak tampilan saat Anda mengaktifkan visibilitas.
gb96
77

Coba kode di bawah ini -

playButton.setVisibility(View.INVISIBLE);

atau -

playButton.setVisibility(View.GONE);

perlihatkan lagi dengan -

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

Silakan gunakan di bawah ini

View.GONE and View.VISIBLE
Nikhil
sumber
8

Hidde:

BUTTON.setVisibility(View.GONE);

Menunjukkan:

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

Di Kotlin

myButton.visibility = View.GONE

jungledev
sumber
4

Saya sarankan Anda hanya menggunakan satu tombol untuk mengubah teks dan perilaku pada tombol sesuai permintaan. Itu lebih mudah dan lebih bersih daripada menangani dua tombol yang tumpang tindih.

@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
sumber
saya suka ide Anda sebenarnya apa yang saya lakukan di iphone toggling satu tombol untuk melakukan banyak hal. Tapi saya baru mengenal android, tolong tunjukkan saya contoh bagaimana melakukan ini ..
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
sumber
2

Silakan coba ini: playButton = (Button) findViewById(R.id.play); playButton.setVisibility(View.INVISIBLE);Saya pikir ini akan melakukannya.

Kemangi
sumber
1

Untuk "Xamarin Android":

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

Kode Kotlin jauh lebih sederhana:

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