Android: perbedaan antara tidak terlihat dan hilang?

477

Apa perbedaan antara invisibledan goneuntuk status visibilitas tampilan?

rampok
sumber
26
Ketika sebuah Tampilan hilang, itu berarti tidak memerlukan ruang dalam tata letak. Ketika tidak terlihat, itu akan mengambil ruang yang diperlukan dalam tata letak tetapi Anda tidak melihatnya.
DroidBender

Jawaban:

709

TAK TERLIHAT:

Tampilan ini tidak terlihat, tetapi masih membutuhkan ruang untuk keperluan tata letak.

PERGI:

Tampilan ini tidak terlihat, dan tidak membutuhkan ruang apa pun untuk keperluan tata letak.

Iñigo
sumber
113
Sepertinya analog dengan display:none& visibility:hiddendalam HTML / CSS :-)
anishsane
Atau Tersembunyi dan Runtuh di
Wpf
1
Jika tidak terlihat, apakah klik juga dinonaktifkan?
Kuldeep Yadav
1
@ KaldeepYadav ya itu akan hilang dan tidak terlihat.
steve moretz
1
hanya untuk pembaca yang ingin tahu di masa depan: kita masih dapat menggunakan performitemKlik pada tampilan daftar / kisi meskipun itu tidak terlihat.
kiranking
264

Dari Dokumentasi Anda bisa mengatakan itu

View.GONE Tampilan ini tidak terlihat, dan tidak membutuhkan ruang apa pun untuk keperluan tata letak.

Lihat. TIDAK TERLIHAT Tampilan ini tidak terlihat, tetapi masih membutuhkan ruang untuk keperluan tata letak.


Mari bersihkan idenya dengan beberapa gambar.

Anggap Anda memiliki tiga tombol, seperti di bawah ini

masukkan deskripsi gambar di sini

Sekarang jika Anda menetapkan visibilitas Tombol Dua sebagai tidak terlihat ( View.INVISIBLE), maka hasilnya akan menjadi

masukkan deskripsi gambar di sini

Dan ketika Anda mengatur visibilitas Tombol Dua sebagai hilang (View.GONE ) maka output akan

masukkan deskripsi gambar di sini

Semoga ini akan menghapus keraguan Anda.

Pankaj Kumar
sumber
4
Apakah idenya perlu dibersihkan? Tampaknya cukup jelas bagi saya hanya dari penjelasannya.
John Dvorak
16
@ JanDvorak :) Hebat! Saya tidak punya jawaban untuk pertanyaan Anda. Jika menurut Anda ini sangat jelas untuk semua pengguna, maka jawaban yang diterima harus berupa komentar dan memiliki tautan situs dokumentasi. Apakah saya benar?
Pankaj Kumar
bagaimana jika saya menggunakannya untuk edittext. apakah mungkin untuk mendapatkan nilai dari edittext?
Ashish
32

Untuk ListView atau GridView ada perbedaan lain, ketika visibilitas awalnya diatur ke

TAK TERLIHAT:

Fungsi getView () adaptor disebut

PERGI:

Fungsi getView () adaptor tidak memanggil, sehingga mencegah tampilan dimuat, saat tidak perlu

mes
sumber
10

TAK TERLIHAT:
Pandangan harus ditarik dan itu membutuhkan waktu.

GONE:
Tampilan tidak harus digambar.

twlkyao
sumber
8
Lihat tidak ditarik, diukur dan ditata.
cyroxis
@cyroxis mungkin dia maksud metode penarikan!
David
7

Saya ingin menambahkan jawaban yang benar dan sukses, bahwa jika Anda menginisialisasi tampilan dengan visibilitas sebagai View.GONE, tampilan mungkin tidak diinisialisasi dan Anda akan mendapatkan beberapa kesalahan acak.

Misalnya jika Anda menginisialisasi tata letak sebagai View.GONE dan kemudian Anda mencoba memulai animasi, dari pengalaman saya, saya punya animasi saya bekerja secara acak kali. Terkadang ya, kadang tidak.

Jadi sebelum menangani (mengubah ukuran, memindahkan, apa pun) tampilan, Anda harus mengaktifkannya sebagai View.VISIBLEatau View.INVISIBLEmembuatnya (menggambar) di layar, dan kemudian menanganinya.

Rafael Ruiz Muñoz
sumber
Ya, Anda benar, itu hanya bekerja kadang-kadang ketika pandanganGONE
Suraj Bahadur
4

ketika Anda membuatnya Hilang setiap kali kompilasi program komponen diinisialisasi yang berarti Anda menghapus komponen dari tata letak dan ketika Anda membuatnya tidak terlihat komponen itu akan mengambil ruang yang sama dalam tata letak tetapi setiap kali Anda tidak perlu menginisialisasi itu .

jika Anda mengatur Visibilitas = Pergi maka Anda harus menginisialisasi komponen..seperti

mis. Tombol _mButton = Tombol baru (ini);

_mButton = (Tombol) findViewByid (R.id.mButton);

sehingga akan membutuhkan lebih banyak waktu dibandingkan dengan Visibilitas = tidak terlihat.

kuldeep zala
sumber
4
  • View.INVISIBLE -> View tidak terlihat tetapi akan menempati beberapa ruang dalam tata letak

  • View.GONE -> View tidak terlihat dan tidak akan menempati ruang dalam tata letak

Yugandhar Vadlamudi
sumber
0

View.GONE = Tampilan tidak akan ditampilkan dan tampilan lainnya tidak akan dipertimbangkan keberadaannya

View.INVISIBLE = Tampilan tidak akan ditampilkan, tetapi akan mengambil ruang yang ditentukan dalam tata letak

MKH
sumber