Tengo dos imágenes cuya área transparente se superponen entre sí. Cuando hago clic en una imagen, se llama al onclicklistener de otra imagen. ¿Hay alguna forma de reducir el área seleccionable de ImageView?Android: ¿Cómo reducir el área seleccionable de View?
Respuesta
se crea un TouchDelegate
:
final View parent = (View) findViewById(R.id.touch_delegate_root);
parent.post(new Runnable() {
// Post in the parent's message queue to make sure the parent
// lays out its children before we call getHitRect()
public void run() {
final Rect rect = new Rect();
Button delegate = YourActivityClass.this.mButton;
delegate.getHitRect(rect);
rect.top -= 20;
rect.bottom += 12; // etc
parent.setTouchDelegate(new TouchDelegate(rect , delegate));
}
});
referido de here
se puede resolver utilizando únicamente XML. Simplemente coloque su imagen en un marco y coloque otra vista transparente que conecte para hacer clic en eventos encima de ella. Ajustar el tamaño y la posición con los parámetros de diseño:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView android:id="your_view"
android:clickable="false"
<!-- your other attributes -->
<!-- ... -->
/>
<ImageView android:id="the_clickable_view"
android:src="@null"
<!-- set desired size of clickable area -->
<!-- align it inside a frame using:
android:gravity and android:margins -->
/>
</FrameLayout>
Como el área deseada que no se puede hacer clic es "transparente" (supongo que eso significa que no está dentro del área del dibujo) incluso podría deshacerse de la vista añadida y simplemente al agregar FrameLayout lo resolvió: use los atributos de diseño originales en el FrameLayout en lugar de ImageView y haga que ImageView solo sea tan grande como desee que se pueda hacer clic. –
No utilice el OnClickListener, pero el OnTouchListener y manejar el área de clic por sí mismo.
Por ejemplo, al escalar el rectángulo táctil y traducirlo al centro de la vista. También podría usar radios o compensaciones manuales.
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final Rect rect = new Rect();
v.getHitRect(rect);
float scale = 0.5f;
final float x = event.getX();
final float y = event.getY();
final float minX = v.getWidth() * 0.5f * (1.0f - scale);
final float maxX = v.getWidth() * 0.5f * (1.0f + scale);
final float minY = v.getHeight() * 0.5f * (1.0f - scale);
final float maxY = v.getHeight() * 0.5f * (1.0f + scale);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (x > minX && x < maxX && y > minY && y < maxY) {
Log.d("TOUCH", String.valueOf(x) + " " + String.valueOf(y));
}
break;
}
return true;
}
});
- 1. ¿Expandir el área seleccionable de un ImageView usando el relleno?
- 2. android webview contenido no seleccionable
- 3. Android ImageButton ¿cómo tener un área seleccionable que es más grande que la imagen en sí?
- 4. ¿Cómo aumentar el área seleccionable de un botón de etiqueta <a>?
- 5. JavaScript y SVG: ¿cómo se aumenta el área seleccionable para un evento onClick?
- 6. Android image view gravity
- 7. Android View Lifecycle
- 8. android arrastre view smooth
- 9. Cómo reducir el tamaño de imagen JPEG en Android
- 10. Agregue una superposición transparente más grande para aumentar el área seleccionable, sin cambiar el diseño
- 11. Android View Pager arroja el camino equivocado
- 12. Android: ¿obtiene el área visible de una vista?
- 13. Android reducir el tamaño de imagen de cámara
- 14. Android Drop Shadow en View
- 15. WYSIWYG View Editor en 'Android'?
- 16. android image view scale animation
- 17. Android view fade in programatically
- 18. Hacer texto seleccionable en un área de texto dentro de un padre ordenable jQuery
- 19. ¿Cómo hacer que Canvas dibuje el área transparente en Android?
- 20. Reducir el tamaño (como en el área) del gráfico generado por graphviz
- 21. Objeto de imagen seleccionable
- 22. Diseño de Android como botón con funcionalidad seleccionable
- 23. Android - Reducir el tamaño del archivo de imagen
- 24. Cómo mostrar/ocultar un área dentro de Razor View en ASP.NET MVC programáticamente
- 25. El método getDrawingCache() de Android 2.1 View siempre devuelve nulo
- 26. Obtenga el OnClickListener actual de un objeto Android View
- 27. Área Google Map marcador con enlace
- 28. Android view layout_width - cómo cambiar de forma programática?
- 29. android model view presentador/controlador ejemplos
- 30. Expandible list-view android, establece drawwables personalizados
Con su método pude aumentar el área táctil, pero no pude reducir el área. – Amit