2011-12-02 41 views
6

Tôi đã hy vọng nhận được câu trả lời cho vấn đề của tôi hiện tại.Cửa sổ bật lên Android loại bỏ khi được nhấp vào bên ngoài

Tôi có một lớp mở rộng cửa sổ bật lên. Nó hoạt động tốt, ngoại trừ tôi không muốn cửa sổ để loại bỏ khi tôi nhấp vào bên ngoài cửa sổ.

Hiện tại tôi có setOutsideTouchable(false); nhưng điều này chỉ dừng sự kiện bên ngoài cửa sổ, nó vẫn loại bỏ cửa sổ bật lên.

Hộp thoại có setCanceledOnTouchOutside(false), có điều gì tương tự tôi có thể sử dụng không?

Cảm ơn

+0

Đây là câu trả lời của tôi [1]! Và câu hỏi là [câu hỏi]. [1]: http://stackoverflow.com/questions/10406339/avoiding-popupwindow-dismissal-after-touching-outside/30586418#30586418 [câu hỏi]: http: //stackoverflow.com/questions/10406339/tránh-popupwindow-dismissal-after-touch-outside – user2297951

Trả lời

6

Ok để cố định cuối cùng.

Đầu tiên tạo bố cục chính mà cửa sổ bật lên nằm trên bố cục tương đối. Sau đó, đặt một bố trí trống toàn màn hình trên đầu trang mà tôi đã vô hình và minh bạch.

Sau đó hiển thị khi popup được hiển thị, thiết lập các bảng điều khiển màn hình đầy đủ có thể nhìn thấy với setVisibility(View.VISIBLE); và ẩn khi popup được ẩn với setVisibility(View.GONE);

Cũng cần phải trả lại đúng từ trên touch nghe cho bố trí với (Để dừng liên lạc sự kiện đi lại để bố trí chính):

blocker.setOnTouchListener(new OnTouchListener() { 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
return true; 
} 
}); 

Và cung cấp cho các cửa sổ popup các thuộc tính:

setTouchable(true); 
setOutsideTouchable(false); 

Chúc mừng

+0

bạn có thể giải thích chính xác hơn cách bạn tạo bố cục? – lory105

+0

khi bạn đang bay stackoverflow và đột nhiên nhận ra câu trả lời bạn cần được viết bởi một đồng nghiệp cũ - cổ vũ Joss –

+0

đã lưu ngày của tôi. cảm ơn cậu.. –

0

Bạn đang sử dụng số này PopupWindow để làm gì? Có vẻ như bạn sử dụng nó theo cách khác nhiều hơn Dialog.

Điều đó đang được nói có thể bạn sẽ phải xem xét sử dụng setTouchInterceptor và sau đó tạo OnTouchListener của riêng bạn mà bạn sẽ sử dụng để kiểm tra nơi chạm được thực hiện (trên Cửa sổ bật lên hay không).

+0

Xin chào, tôi đang sử dụng cửa sổ bật lên có băng chuyền và một số bố cục tuyến tính bên trong. Dường như nó hoạt động tốt nhất cho những gì tôi cần làm ngoài vấn đề này mà tôi có. –

Các vấn đề liên quan