Làm cách nào để ẩn Chế độ xem theo chương trình?


125

Trong ứng dụng của tôi, tôi có 2 LinearLayout'ngay trên nhau. Thông qua một tùy chọn menu, tôi muốn có thể làm cho cái dưới cùng biến mất, và cái trên cùng rơi xuống biến mấtLinearLayout .

Vấn đề là, tôi không biết làm thế nào để làm điều này trong Java.

Nó không phải là hoạt hình, tôi muốn ẩn sự Layouttrở lại của một hoạt động khác (menu), trong OnActivityResult. Menu activityđặt một vị trí booleanmà tôi đăng ký OnActivityResultvà theo giá trị của nó, tôi xác định xem mình có cần ẩn hoặc hiển thị phía dưới không 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.
    }
}

Bất cứ ai có thể cho tôi một gợi ý hoặc một liên kết về cách tôi nên làm điều này?

Câu trả lời:


324

Bạn có thể gọi view.setVisibility(View.GONE)nếu bạn muốn loại bỏ nó khỏi bố trí.

Hoặc view.setVisibility(View.INVISIBLE)nếu bạn chỉ muốn che giấu nó.

Từ Tài liệu Android :

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í. Sử dụng với setVisibility(int)android:visibility.

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í. Sử dụng với setVisibility(int)android:visibility.


16
Người dùng vẫn có thể tương tác với nó nếu nó được đặt thành view.setVisibility (View.INVISIBLE)?
WhiskThimble

Chẳng hạn, một hoạt động có thể thay đổi chế độ xem nếu nó được đặt thành Gone không? Tôi tưởng tượng bạn có thể nếu nó được đặt thành BÍ MẬT.
săn

1
Còn trong RelativeLayout thì sao? Vị trí xem là phụ thuộc lẫn nhau. Tôi tự hỏi điều gì sẽ xảy ra sau khi một lượt xem đi.
Zin Win Htet

@ErPragatiSingh vui lòng luôn đặt liên kết từ nơi bạn sao chép-dán và giữ câu trả lời tương tự như cách OP muốn nói. :)
Sufian

@Sufian cảm ơn, tất cả từ trang web chính thức của nhà phát triển Android.
6/2/2016

19

Thử cái này:

linearLayout.setVisibility(View.GONE);

0

Giải pháp 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

Giải pháp mở rộng Kotlin

Nếu bạn muốn chúng có độ dài phù hợp hơn, hoạt động cho các chế độ xem không thể thực hiện được và giảm khả năng viết sai boolean, hãy thử sử dụng các tiện ích mở rộng tùy chỉnh sau:

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