Forma dibujable que no se muestra cuando se utiliza en combinación con el atributo android: drawableBottom.
Archivo XML guardado en res / drawable / gradient_box.xml:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:angle="45"/> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <corners android:radius="8dp" /> </shape>
(La definición de forma anterior se toma de la guía de desarrolladores de Android, no hay errores.).
- Crear la forma de archivo xml en carpeta extraíble en android studio
- Rendimiento sabio, lo que es típicamente mejor, utilizando una imagen o una forma creada xml como un drawable?
- Diseño de diseño de Android
- Android: ¿Cómo puedo utilizar la capa de lista y los elementos de forma para dibujar una regla horizontal cuando se establece como fondo?
- Especificación de recortes transparentes en xml
Vamos a tratar de usarlo junto con un TextView:
<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Text with some crazy rectangle shape below it." android:drawableBottom="@drawable/gradient_box"/>
El TextView se muestra como si el atributo drawableBottom no estuviera allí. Sin embargo, establecer la forma como el fondo funciona bien:
<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Text with crazy background" android:background="@drawable/gradient_box"/>
Establecer una imagen real (por ejemplo, un * .png) en el android: drawableBottom también funciona bien.
¿Algunas ideas?
- No puede establecer la altura y el ancho de una forma de recurso en estilos
- Android - cómo definir ShapeDrawables mediante programación?
- Android: forma "esquinas" problema. ¿Es esto un error?
- ¿Cómo dibujo una flecha (en Android)?
- Creación de una forma de rectángulo con sólo dos bordes redondeados
- RecyclerView con elementos personalizados
- Forma personalizada de Android
- ¿Cómo cambiar dinámicamente el color de la forma?
¡Resuelto! El problema parece ser que una forma no tiene necesariamente límites intrínsecos. Es decir, el resultante dibujable no sabe cómo dibujar a sí mismo!
Para resolver este problema, simplemente especifique el tamaño de la forma, como esto:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:angle="45"/> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <corners android:radius="8dp" /> <size android:width="xxdp" android:height="xxdp"/> </shape>
Cuando la forma se especificó como un fondo dibujable para el TextView, se sabía que sus dimensiones eran las mismas que las dimensiones de TextView. Al indicar la forma para ir a la derecha o por encima de TextView, las dimensiones de forma no se pudieron determinar automáticamente.
Si está utilizando un ImageView para alojar la forma de línea como parte del atributo "android: src", también se ejecutará en el mismo problema a menos que especifique el ancho y la altura como parte de la forma xml. Una solución es alojar la forma de línea como parte del atributo "android: fondo" de ImageView. De esta manera, puede hacer uso de los atributos de tamaño del ImageView para que la forma de la línea se "muestre".