จะซ่อนมุมมองแบบเป็นโปรแกรมได้อย่างไร?


125

ในใบสมัครของฉันฉันมี 2 ตัวLinearLayoutอยู่เหนือกัน LinearLayoutผ่านทางตัวเลือกเมนูที่ผมต้องการที่จะสามารถที่จะทำให้หนึ่งด้านล่างหายไปและมีหนึ่งด้านบนวางลงไปหายไป

ปัญหาคือฉันไม่รู้ว่าจะทำอย่างไรใน Java

มันไม่ได้จะต้องมีการเคลื่อนไหวผมต้องการที่จะซ่อนLayoutการกลับมาของ (เมนู) OnActivityResultกิจกรรมอื่นใน เมนูactivityตั้งค่าbooleanที่ฉันเช็คอินOnActivityResultและตามค่าของมันฉันกำหนดว่าฉันต้องการซ่อนหรือแสดงด้านล่าง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.
    }
}

ใครสามารถให้คำแนะนำหรือลิงค์เกี่ยวกับวิธีที่ฉันควรทำ

คำตอบ:


324

คุณสามารถโทรได้view.setVisibility(View.GONE)หากต้องการลบออกจากเค้าโครง

หรือview.setVisibility(View.INVISIBLE)ถ้าคุณต้องการเพียงแค่ซ่อนมัน

จากAndroid Docs :

มองไม่เห็น

มุมมองนี้จะมองไม่เห็น แต่ยังคงใช้พื้นที่ว่างเพื่อวัตถุประสงค์ในการจัดวาง ใช้กับsetVisibility(int)และandroid:visibility.

ที่ไปแล้ว

มุมมองนี้จะมองไม่เห็นและไม่ใช้พื้นที่ใด ๆ เพื่อวัตถุประสงค์ในการจัดวาง ใช้กับsetVisibility(int)และandroid:visibility.


16
ผู้ใช้ยังสามารถโต้ตอบกับมันได้หรือไม่หากตั้งค่าเป็น view.setVisibility (View.INVISIBLE)
WhiskThimble

ตัวอย่างเช่นกิจกรรมสามารถเปลี่ยนแปลงมุมมองได้หรือไม่หากตั้งค่าเป็น GONE ฉันคิดว่าคุณจะทำได้ถ้าตั้งค่าเป็นมองไม่เห็น
คูเมือง

1
แล้วใน RelativeLayout ล่ะ? ตำแหน่งการดูขึ้นอยู่กับแต่ละอื่น ๆ ฉันสงสัยว่าจะเกิดอะไรขึ้นหลังจากมุมมองหายไป
Zin Win Htet

@ErPragatiSingh กรุณาใส่ลิงค์จากจุดที่คุณคัดลอกและให้คำตอบคล้ายกับที่ OP ต้องการจะพูด :)
Sufian

@Sufian ขอบคุณทุกอย่างจากเว็บไซต์ทางการของนักพัฒนา Android
Prags


0

โซลูชัน 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

Kotlin Extension Solution

หากคุณต้องการให้มีความยาวสม่ำเสมอมากขึ้นให้ใช้มุมมองที่เป็นโมฆะและลดโอกาสในการเขียนบูลีนที่ไม่ถูกต้องให้ลองใช้ส่วนขยายที่กำหนดเองเหล่านี้:

// 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
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.