簡體   English   中英

如何以編程方式隱藏視圖?

[英]How to hide a View programmatically?

在我的應用程序中,我有 2 個LinearLayout的正上方。 通過菜單選項,我希望能夠使底部的一個消失,並將頂部的一個下拉到消失的LinearLayout

問題是,我不知道如何在 Java 中做到這一點。

它不必是動畫的,我想在OnActivityResult隱藏另一個活動(菜單)返回時的Layout 菜單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.
    }
}

任何人都可以給我一個關於我應該如何做到這一點的提示或鏈接嗎?

如果要將其從布局中刪除,可以調用view.setVisibility(View.GONE)

或者view.setVisibility(View.INVISIBLE)如果你只是想隱藏它。

Android 文檔

無形的

這個視圖是不可見的,但它仍然占用布局空間。 setVisibility(int)android:visibility

走了

這個視圖是不可見的,它不占用任何布局空間。 setVisibility(int)android:visibility

嘗試這個:

linearLayout.setVisibility(View.GONE);

科特林解決方案

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 擴展解決方案

如果您希望它們的長度更一致,適用於可為空的視圖,並降低編寫錯誤布爾值的機會,請嘗試使用這些自定義擴展:

// 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
}

為了簡化條件可見性,還要添加以下內容:

fun View?.show(visible: Boolean) {
    if (visible) show() else gone()
}

fun View?.hide(hide: Boolean) {
    if (hide) hide() else show()
}

fun View?.gone(gone: Boolean = true) {
    if (gone) gone() else show()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM