Bạn có thể ghi đè lên để đánh chặn tất cả các sự kiện liên lạc trong hoạt động của bạn, thậm chí nếu bạn có một số Chế độ xem như ScrollView, Nút, v.v. sẽ tiêu thụ sự kiện chạm.
Kết hợp với ViewGroup.requestDisallowInterceptTouchEvent
, bạn có thể vô hiệu hóa sự kiện chạm của ViewGroup. Ví dụ: nếu bạn muốn tắt tất cả sự kiện chạm trong một số Nhóm xem, hãy thử điều này:
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
requestDisallowInterceptTouchEvent(
(ViewGroup) findViewById(R.id.topLevelRelativeLayout),
true
);
return super.dispatchTouchEvent(event);
}
private void requestDisallowInterceptTouchEvent(ViewGroup v, boolean disallowIntercept) {
v.requestDisallowInterceptTouchEvent(disallowIntercept);
int childCount = v.getChildCount();
for (int i = 0; i < childCount; i++) {
View child = v.getChildAt(i);
if (child instanceof ViewGroup) {
requestDisallowInterceptTouchEvent((ViewGroup) child, disallowIntercept);
}
}
}
Phương pháp ghi đè hoạt động trước khi xem: xem chúng . – Jens
@ Jens nó là sự thật, nhưng nó không ngăn chặn chạm vào 'DialogFragment' (vì nó thuộc về một cửa sổ khác có thể) –
Tôi đoán bạn đã thử đặt cửa sổ TYPE_SYSTEM_ALERT của riêng bạn trên tất cả mọi thứ bằng WindowManager # addView (..)? – Jens