Android: sự khác biệt giữa vô hình và biến mất?


477

Sự khác biệt giữa invisiblegonecho trạng thái hiển thị Chế độ xem là gì?


26
Khi Chế độ xem không còn, điều đó có nghĩa là nó không chiếm bất kỳ khoảng trống nào trong bố cục. Khi nó vô hình, nó sẽ lấy phòng cần thiết trong một bố cục nhưng bạn không nhìn thấy nó.
DroidBender

Câu trả lời:


709

VÔ CÙNG:

Khung nhìn này là vô hình, nhưng nó vẫn chiếm không gian cho mục đích bố trí.

KHÔNG CÒN:

Khung nhìn này là vô hình và nó không chiếm bất kỳ không gian nào cho mục đích bố trí.


113
Trông giống như display:none& visibility:hiddentrong HTML / CSS :-)
anishsane

Hoặc để ẩn và thu gọn trong
Wpf

1
Nếu nó vô hình, nhấp vào nó cũng bị vô hiệu hóa?
Kuldeep Yadav

1
@KuldeepYadav vâng, nó sẽ ở cả đi và vô hình.
steve moretz

1
chỉ dành cho những độc giả tò mò trong tương lai: chúng tôi vẫn có thể sử dụng PerformanceItemClick trên danh sách / chế độ xem lưới ngay cả khi nó không hiển thị.
kiranking

264

Từ Tài liệu bạn có thể nói rằng

View.GONE Khung nhìn này là vô hình và nó không chiếm bất kỳ không gian nào cho mục đích bố trí.

View.INVISIBLE Khung nhìn này là vô hình, nhưng nó vẫn chiếm không gian cho mục đích bố trí.


Hãy làm rõ ý tưởng với một số hình ảnh.

Giả sử rằng bạn có ba nút, như bên dưới

nhập mô tả hình ảnh ở đây

Bây giờ nếu bạn đặt mức độ hiển thị của Nút Hai là vô hình ( View.INVISIBLE), thì đầu ra sẽ là

nhập mô tả hình ảnh ở đây

Và khi bạn đặt chế độ hiển thị của Nút Hai là đi ( View.GONE) thì đầu ra sẽ là

nhập mô tả hình ảnh ở đây

Hy vọng điều này sẽ xóa tan nghi ngờ của bạn.


4
Có phải ý tưởng cần phải được xóa? Nó dường như đủ rõ ràng cho tôi chỉ từ lời giải thích.
John Dvorak

16
@JanDvorak :) Tuyệt vời! Tôi không có câu trả lời cho câu hỏi của bạn. Nếu bạn nghĩ rằng điều này rất rõ ràng cho tất cả người dùng, thì câu trả lời được chấp nhận nên là một nhận xét và có một liên kết của trang web tài liệu. Tôi có đúng không?
Pankaj Kumar

Điều gì nếu tôi sử dụng nó cho edittext. Có thể lấy giá trị từ edittext?
Ashish

32

Đối với ListView hoặc GridView, có một sự khác biệt khác, khi tầm nhìn ban đầu được đặt thành

VÔ CÙNG:

Hàm getView () của Adaptor gọi là

KHÔNG CÒN:

Hàm getView () của Adaptor không gọi, do đó ngăn không cho tải lượt xem, khi không cần thiết


10

VẤN ĐỀ:
Quan điểm phải được rút ra và cần có thời gian.

Gone:
Chế độ xem không cần phải vẽ.


8
Xem không được vẽ, nó được đo lường và đặt ra.
cyroxis

@cyroxis có lẽ anh ấy / cô ấy có nghĩa là phương pháp ondraw!
David

7

Tôi muốn thêm vào câu trả lời đúng và thành công, rằng nếu bạn khởi tạo chế độ xem với khả năng hiển thị View.GONE, thì chế độ xem có thể không được khởi tạo và bạn sẽ gặp một số lỗi ngẫu nhiên.

Ví dụ: nếu bạn khởi tạo bố cục như View.GONEsau đó bạn cố gắng bắt đầu một hình động, từ kinh nghiệm của tôi, tôi đã làm cho hoạt hình của mình hoạt động ngẫu nhiên nhiều lần. Lúc có lúc không.

Vì vậy, trước khi xử lý (thay đổi kích thước, di chuyển, bất cứ điều gì) một chế độ xem, bạn phải khởi tạo nó dưới dạng View.VISIBLEhoặc View.INVISIBLEhiển thị nó (vẽ nó) trong màn hình, sau đó xử lý nó.


Vâng, bạn đã đúng, Nó chỉ hoạt động đôi khi khi xem làGONE
Suraj Bahadur

4

Khi bạn tạo nó Đã qua mỗi lần biên dịch chương trình, thành phần được khởi tạo, điều đó có nghĩa là bạn đang xóa thành phần khỏi bố cục và khi bạn ẩn nó, thành phần đó sẽ chiếm cùng một không gian trong bố cục nhưng mỗi khi bạn không cần khởi tạo nó .

nếu bạn đặt Visibility = Gone thì bạn phải khởi tạo thành phần..như

ví dụ: Nút _mButton = Nút mới (cái này);

_mButton = (Nút) findViewByid (R.id.mButton);

do đó sẽ mất nhiều thời gian hơn so với Visibility = vô hình.


4
  • View.INVISIBLE -> Chế độ xem là vô hình nhưng nó sẽ chiếm một số không gian trong bố cục

  • View.GONE -> Chế độ xem không hiển thị và nó sẽ không chiếm bất kỳ không gian nào trong bố cục


0

View.GONE = Chế độ xem sẽ không hiển thị và phần còn lại của chế độ xem sẽ không xem xét sự tồn tại của nó

View.INVISIBLE = Chế độ xem sẽ không hiển thị, nhưng nó sẽ chiếm không gian được chỉ định trong bố cục

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.