una subir samsung play pantalla gratis google dividir dividida developer cuesta cuanto como celular app aplicacion android events

subir - pantalla dividida android 8



¿Cómo desencadenar un evento cuando alguien hace clic en cualquier lugar de la pantalla en una aplicación de Android? (6)

¿Cómo puedo detectar el evento cuando se produce un clic en algún lugar de la pantalla de la aplicación? No importa si hay un botón o algo más. Solo necesito aplicar un detector de eventos onClick() en toda la pantalla de la aplicación.
¿Como hacer esto?


Creo que la forma más fácil es anular onUserInteraction en su Activity

EditText cuenta que no se activará cuando los usuarios se centren en EditText / EditText y Spinners (probablemente también otros Widgets). Pero se activará cada vez que el usuario toque la pantalla o presione un botón.

Pero esto hace que no sea necesario incorporar oyentes en sus diseños o escribir métodos adicionales para manejarlos, por lo que creo que es la forma más sencilla de obtener lo que desea.


Dale a tu diseño principal una identificación, entonces

LinearLayout root = (LinearLayout) findViewById(R.id.main_layout); root.setOnClickListener(new OnClickListener() { public void onClick() { } });


Quizás pueda agregar un escucha a la instancia de Diseño, obteniendo el diseño con

RelativeLayout l = (RelativeLayout)findViewById(R.id.mylayout); l.setOnClickListener(click);


Solo debe anular el método dispatchTouchEvent(ev: MotionEvent)

Mira este ejemplo en Kotlin. Este enfoque no afectará a ningún onClickListenters en su aplicación

/** * On each touch event: * Check is [snackbar] present and displayed * and dismiss it if user touched anywhere outside it''s bounds */ override fun dispatchTouchEvent(ev: MotionEvent): Boolean { // dismiss shown snackbar if user tapped anywhere outside snackbar snackbar?.takeIf { it.isShown }?.run { val touchPoint = Point(Math.round(ev.rawX), Math.round(ev.rawY)) if (!isPointInsideViewBounds(view, touchPoint)) { dismiss() snackbar = null // set snackbar to null to prevent this block being executed twice } } // call super return super.dispatchTouchEvent(ev) }

O echa un vistazo a la gist completa


También puede establecer directamente una devolución de llamada desde el atributo onClick xml del diseño raíz:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:layout_width="fill_parent" android:layout_height="fill_parent" android:onClick"myMethod"> <!- Your other view-> </Relativelayout>

Y en tu actividad:

public void myMethod(View pView) { //XXX do something }

Menos código hinchado de esta manera :)


setonclicklistner para el diseño principal de su archivo de diseño ...

Me gusta .... main.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/mainlayout"> <!- Your other view-> </Relativelayout>

y establece click listener para mainlayout ...

RelativeLayout rlayout = (RelativeLayout) findViewById(R.id.mainlayout); rlayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } });