Sen aktivitesinde tüm dokunmatik olayları önünü geçersiz kılabilirsiniz:
hiçbir şans ile Etkinlik en Window
dekor görüntüsü yoluyla (event) yakalamak için çalıştık Dokunma olayını tüketecek ScrollView, Button, vb. Bazı Görünümler.
ViewGroup.requestDisallowInterceptTouchEvent
ile birlikte, ViewGroup'un dokunma olayını devre dışı bırakabilirsiniz. Bazı ViewGroup tüm dokunmatik olay devre dışı bırakmak istiyorsanız Örneğin, bu deneyin:
@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);
}
}
}
Etkinlik # dispatchTouchEvent geçersiz kılma (..) yöntemi Görünüm önce tüm dokunmatik olayları yolunu kesmek için izin verir: s onları görünce . – Jens
@Jens bu doğru, ancak 'DialogFragment' (bu başka bir pencereye ait olduğu için belki de) dokunmalarını engellememektedir. –
Sanırım WindowManager # addView (..) kullanarak herşeyin üstüne kendi TYPE_SYSTEM_ALERT penceresini yerleştirmeyi denediniz mi? – Jens