อะไรคือความแตกต่างระหว่างinvisible
และgone
สำหรับสถานะการมองเห็นวิว
อะไรคือความแตกต่างระหว่างinvisible
และgone
สำหรับสถานะการมองเห็นวิว
คำตอบ:
มองไม่เห็น:
มุมมองนี้มองไม่เห็น แต่ยังคงใช้พื้นที่สำหรับจุดประสงค์ของการจัดวาง
ที่ไปแล้ว:
มุมมองนี้มองไม่เห็นและไม่ใช้พื้นที่สำหรับจุดประสงค์ในการจัดวาง
display:none
& visibility:hidden
ใน HTML / CSS :-)
จากเอกสารคุณสามารถพูดได้ว่า
View.GONEมุมมองนี้จะมองไม่เห็นและไม่ใช้พื้นที่สำหรับจุดประสงค์ในการจัดวาง
View.INVISIBLEมุมมองนี้มองไม่เห็น แต่ยังคงใช้พื้นที่สำหรับการจัดวาง
ให้ล้างความคิดด้วยภาพบางภาพ
สมมติว่าคุณมีสามปุ่มเช่นด้านล่าง
ตอนนี้ถ้าคุณตั้งค่าการมองเห็นของปุ่มสองเป็นล่องหน ( View.INVISIBLE
) แล้วผลลัพธ์จะเป็น
และเมื่อคุณตั้งค่าการมองเห็นของปุ่มสองเป็นไปแล้ว ( View.GONE
) แล้วเอาท์พุทจะเป็น
หวังว่านี่จะช่วยขจัดข้อสงสัยของคุณ
สำหรับ ListView หรือ GridView มีความแตกต่างอีกประการหนึ่งเมื่อการมองเห็นถูกตั้งค่าเป็นครั้งแรก
มองไม่เห็น:
ฟังก์ชัน getView () ของอแด็ปเตอร์เรียกว่า
ที่ไปแล้ว:
ฟังก์ชัน getView () ของอแด็ปเตอร์ไม่ได้เรียกใช้ดังนั้นจึงป้องกันมุมมองที่จะโหลดเมื่อไม่จำเป็น
ฉันต้องการเพิ่มคำตอบที่ถูกต้องและประสบความสำเร็จว่าหากคุณเริ่มต้นมุมมองด้วยการมองเห็นว่าView.GONE
มุมมองอาจไม่ได้เริ่มต้นและคุณจะได้รับข้อผิดพลาดแบบสุ่ม
ตัวอย่างเช่นถ้าคุณเริ่มต้นเลย์เอาต์เป็นView.GONE
แล้วคุณพยายามเริ่มต้นแอนิเมชั่นจากประสบการณ์ของฉันฉันทำให้แอนิเมชั่นของฉันทำงานแบบสุ่มครั้ง บางครั้งใช่บางครั้งไม่
ดังนั้นก่อนที่จะจัดการ (ปรับขนาดย้ายอะไรก็ตาม) มุมมองคุณต้องเริ่มต้นเป็นView.VISIBLE
หรือView.INVISIBLE
เพื่อแสดง (วาด) ในหน้าจอแล้วจัดการ
GONE
เมื่อคุณทำให้มันหายไปทุกครั้งที่มีการคอมไพล์โปรแกรมคอมโพเนนต์จะเริ่มต้นนั่นหมายความว่าคุณกำลังลบส่วนประกอบจากเลย์เอาต์และเมื่อคุณทำให้มันมองไม่เห็นส่วนประกอบมันจะใช้พื้นที่เดียวกันในเลย์เอาต์ แต่ทุกครั้งที่คุณไม่จำเป็นต้องเริ่มต้น .
หากคุณตั้งค่า Visibility = Gone คุณจะต้องเริ่มต้นองค์ประกอบ .. like
เช่นปุ่ม _mButton = ปุ่มใหม่ (นี่);
_mButton = (ปุ่ม) findViewByid (R.id.mButton);
ดังนั้นจะใช้เวลามากกว่าเมื่อเทียบกับ Visibility = มองไม่เห็น
View.INVISIBLE -> มุมมองมองไม่เห็น แต่จะใช้พื้นที่ในเลย์เอาต์
View.GONE -> มุมมองมองไม่เห็นและจะไม่ใช้พื้นที่ใด ๆ ในเค้าโครง
View.GONE = มุมมองจะไม่แสดงและมุมมองที่เหลือจะไม่นำมาพิจารณา
View.INVISIBLE = มุมมองจะไม่แสดง แต่จะใช้พื้นที่ที่กำหนดในเค้าโครง