Android: perbedaan antara tidak terlihat dan hilang?


477

Apa perbedaan antara invisibledan goneuntuk status visibilitas tampilan?


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.


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.


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


10

TAK TERLIHAT:
Pandangan harus ditarik dan itu membutuhkan waktu.

GONE:
Tampilan tidak harus digambar.


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.


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.


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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.