Bagaimana cara menyembunyikan Tampilan secara terprogram?

125

Dalam aplikasi saya, saya punya 2 LinearLayouthak di atas satu sama lain. Melalui opsi menu, saya ingin dapat membuat yang bawah menghilang, dan yang atas drop down atas yang hilang LinearLayout.

Masalahnya adalah, saya tidak tahu bagaimana melakukan ini di Jawa.

Tidak harus dianimasikan, saya ingin menyembunyikan Layoutkembalinya aktivitas lain (menu), di OnActivityResult. Menu activitymenetapkan booleandi mana saya check-in OnActivityResult, dan menurut nilainya, saya menentukan apakah saya perlu menyembunyikan atau menunjukkan bagian bawah Layout:

// Only change value if it is different from what it was.
if(mUseVolumeButtonAsPTT != resultData.getBoolean("UseVolumeButtonAsPTT")){
    mUseVolumeButtonAsPTT = resultData.getBoolean("UseVolumeButtonAsPTT");
    if(!mUseVolumeButtonAsPTT){
        // Hide lower LinearLayout.
    } else {
        // Show lower LinearLayout.
    }
}

Adakah yang bisa memberi saya petunjuk atau tautan tentang bagaimana saya harus melakukan ini?

ThaMe90
sumber

Jawaban:

324

Anda dapat menelepon view.setVisibility(View.GONE)jika ingin menghapusnya dari tata letak.

Atau view.setVisibility(View.INVISIBLE)jika Anda hanya ingin menyembunyikannya.

Dari Android Docs :

TAK TERLIHAT

Tampilan ini tidak terlihat, tetapi masih membutuhkan ruang untuk keperluan tata letak. Gunakan dengan setVisibility(int)dan android:visibility.

PERGI

Tampilan ini tidak terlihat, dan tidak membutuhkan ruang untuk keperluan tata letak. Gunakan dengan setVisibility(int)dan android:visibility.

Erich Douglass
sumber
16
Bisakah pengguna masih berinteraksi dengannya jika diatur ke view.setVisibility (View.INVISIBLE)?
WhiskThimble
Dapatkah suatu kegiatan, misalnya, membuat perubahan pada tampilan jika disetel ke GONE? Saya membayangkan Anda bisa jika diatur ke TIDAK TERLIHAT.
moistist
1
Bagaimana dengan di RelativeLayout? Posisi tampilan saling bergantung. Saya bertanya-tanya apa yang akan terjadi setelah pandangan hilang.
Zin Win Htet
@ErPragatiSingh tolong selalu letakkan tautan dari tempat Anda menyalin-rekatkan, dan simpan jawabannya serupa dengan yang ingin dikatakan OP. :)
Sufian
@Sufian terima kasih, semuanya dari situs resmi pengembang android.
Prags
19

Coba ini:

linearLayout.setVisibility(View.GONE);
KERING
sumber
0

Solusi Kotlin

view.isVisible = true
view.isInvisible = true
view.isGone = true

// For these to work, you need to use androidx and import:
import androidx.core.view.isVisible // or isInvisible/isGone

Solusi Ekstensi Kotlin

Jika Anda ingin panjangnya lebih konsisten, bekerja untuk tampilan nullable, dan kecilkan kemungkinan menulis boolean yang salah, coba gunakan ekstensi khusus ini:

// Example
view.hide()

fun View?.show() {
    if (this == null) return
    if (!isVisible) isVisible = true
}

fun View?.hide() {
    if (this == null) return
    if (!isInvisible) isInvisible = true
}

fun View?.gone() {
    if (this == null) return
    if (!isGone) isGone = true
}
Gibolt
sumber