web-dev-qa-db-fra.com

Touchez la vue sous

Dans mon application, j'ai un fragment en plus de l'activité. Le fragment remplit tout l'écran. Une partie du fragment est une vue transparente et vous pouvez voir les vues sous (qui appartiennent à l'activité). Existe-t-il un moyen de transférer les événements tactiles vers les vues situées sous la vue transparente du fragment? Merci!

33
roiberg

Dans votre méthode onTouchEvent remplacée à l'intérieur du fragment return false, elle transmet l'événement tactile aux vues de calque inférieures.

28
Maciej Boguta

manière la plus simple:

à partir d'ici: https://stackoverflow.com/a/34436589/3818437

Déclarez votre fragment non cliquable/focalisable en utilisant

Android:clickable="false"
Android:focusable="false"

ou

v.setClickable(false)
v.setFocusable(false).

Les événements de clic doivent être envoyés au parent du fragment maintenant.

Remarque: Pour ce faire, vous devez ajouter un clic à son parent direct. ou définissez Android: clickable = "false" et Android: focusable = "false" à son parent direct pour passer l'auditeur à un autre parent.

17
mhdjazmati

Vous pouvez utiliser un drapeau spécial dans layoutParams.

( https://stackoverflow.com/a/53955777/2885859 )

WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
2
Eugene Voronoy