Cómo crear un botón que contiene varias vistas?
En Android, me gustaría crear un botón que contenga otras vistas. Por ejemplo, algo como esto:
+---------------------------+ | Hello world! +-------+ | | | image | | | Some more info +-------+ | +---------------------------+
Pero me gustaría que fuera más flexible que este ejemplo específico. Idealmente, el botón sería simplemente capaz de contener un ViewGroup, por lo que podría implementar su diseño en un archivo XML separado. Sin embargo, como Button extiende View, pero no ViewGroup, esto no parece posible.
- SetClickable () no funciona en el botón
- Vista personalizada de Android (TextView + Button + algunos comportamientos personalizados)?
- Android ignorando mi setWidth () y setHeight ()
- Pdf visor de la biblioteca con curl de página en android
- Max 9000 caracteres en Android TextView?
¿Hay alguna manera de lograr esto usando componentes estándar de Android, o tengo que recurrir a escribir una clase de botón personalizado?
Como se solicita, algunos XML de ejemplo que hace el truco:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:focusable="true" android:clickable="true" android:background="@android:drawable/btn_default"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/primary_text_light"/> <TextView android:id="@+id/additional_line_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/primary_text_light"/> <TextView android:id="@+id/additional_line_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/primary_text_light"/> </LinearLayout>
Tuve que fijar el color en los TextViews explícitamente, de lo contrario serían casi ilegibles (son blancos por defecto). Desenterré el identificador del SDK: .../platforms/android-7/data/res/values/public.xml
. Curiosamente, primary_text_light
da texto en negro, mientras que primary_text_dark
resulta en blanco …
- Fragmento de Android en el botón Método
- Android: ¿Cómo evito que el teclado suave empuje mi vista hacia arriba?
- Cómo establecer Opacity (Alpha) para ver en Android
- ¿Cómo hacer varias vistas del mismo ancho?
- No puedo encontrar la causa de mi accidente con este seguimiento de pila
- Cómo agregar el evento de botón de clic en el estudio de android
- El teclado de Android se oculta, mostrando el espacio en blanco a continuación, después de regresar del protector de pantalla
- DispatchKeyEvent desde Service
Cree la disposición del botón deseado, y fije su android:background
a @android:drawable/btn_default
. Haga que la vista más externa que contiene el resto haga clickable
y se pueda focusable
y ya está.
No estoy seguro, pero ¿has probado la clase ImageButton
? Supongo que debería ser capaz de establecer la imagen a la derecha y debería ser capaz de añadir una etiqueta con nuevas líneas, también.
[Update] Me perdí la parte "más flexible". Si desea tener una más flexible, supongo que necesita crear una implementación propia con un OnTouchListener
propio para manejar todos los posibles estados y detectar clics.
No crearía una clase para eso. Es sólo un RelativeLayout
con dos TextView
y un ImageView
.
Como sabrás, un ViewGroup
extiende la View
y una View
puede tener oyentes de clics. Por lo tanto, necesita crear el diseño y establecer un oyente de clics para él.
El problema aquí es cómo manejas los estados, puedes intentar usar @android:drawable/btn_default
como fondo como @ cognian dijo.
- Usuarios únicos de Android google analytics
- Cómo conectarse a Frambuesa pi con una aplicación de Android en bluetooth