2011-07-22 31 views
9

Tôi đã xem được bổ sung có điều kiện cho phụ huynh. Tôi kiểm tra xem nó đã được thêm vào cha mẹ hay không, thật không may, nó luôn trả về hiển thị của nó.Xem getVisibility() isShown() trả lại hiển thị không chính xác

if (findViewById(R.id.bottom_bar).getVisibility == View.Visible) 

if (findViewById(R.id.bottom_bar).isShown()) 

cả hai trở về true ngay cả khi chế độ xem chưa bao giờ thêm ans không hiển thị.

+0

Bạn đang thêm chế độ xem này bằng cách nào? – Idistic

+0

parentView.addView() – Taranfx

Trả lời

28

getVisibility() chỉ trả lại chế độ hiển thị bạn muốn xem khi được thêm vào cửa sổ. Nó không thay đổi trừ khi bạn gọi setVisibility(). Nó cũng không cho biết liệu chế độ xem có thực sự hiển thị trên màn hình hay không.

isShown() tương tự. Dưới đây là doc:

Trả về tầm nhìn của quan điểm này và tất cả các tổ tiên của nó

Returns
True nếu quan điểm này và tất cả các tổ tiên của nó là VISIBLE

+0

Ngoài ra, nếu ứng dụng ở chế độ nền (ví dụ: màn hình chính đang hoạt động), thì 'isShown()' là sai, bất kể 'getVisibility()' trả về là gì. – gattsbr

-2

Nếu findViewById(R.id.bottom_bar) trả về không rỗng, thì ít nhất một chế độ xem dưới cùng đã được khởi tạo ở đâu đó trong cấu trúc phân cấp Xem. Đó là kiểm tra của bạn.

+0

@taranfx Đã 4 ngày. Bạn có dự định kiểm tra câu trả lời mà bạn đã yêu cầu mọi người gửi không? – cdhabecker

0

tôi đã phải làm một cái gì đó tương tự và tôi có xu hướng hỏi xem nếu nó có một phụ huynh (myView.getParent()! = null) sau đó tôi giả định xem đã được thêm vào xem khác. Thường để ẩn chế độ xem, tôi xóa nó khỏi bố mẹ. Bạn cũng có thể ghi đè lên phương thức onDraw và nếu bạn không nhận được cuộc gọi để vẽ, bạn chắc chắn không nhìn thấy được.

-1
case R.id.title_call_button: 
if(llButtonCallNow.getVisibility() != View.VISIBLE){ 
llButtonCallNow.setVisibility(View.VISIBLE); 
} 
    else{ 
    llButtonCallNow.setVisibility(View.GONE); 
    Toast.makeText(getBaseContext(), ("Im here baby :)"), 
    Toast.LENGTH_SHORT).show(); 

    } 
break; 
Các vấn đề liên quan