Tengo problemas para aplicar un fondo degradado a un diseño lineal.
Esto debería ser relativamente simple de lo que he leído, pero simplemente no parece funcionar. Por motivos de referencia, estoy desarrollando 2.1-update1.
header_bg.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:startColor="#FFFF0000"
android:endColor="#FF00FF00"
android:type="linear"/>
</shape>
main_header.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="horizontal"
android:background="@drawable/header_bg">
</LinearLayout>
Si cambio @ drawable / header_bg a un color, por ejemplo, # FF0000, funciona perfectamente bien. ¿Me estoy perdiendo algo obvio aquí?
Respuestas:
Ok, he logrado resolver esto usando un selector. Ver código a continuación:
main_header.xml:
main_header_selector.xml:
Esperemos que esto ayude a alguien que tiene el mismo problema.
fuente
También es posible tener el tercer color (centro). Y diferentes tipos de formas.
Por ejemplo en drawable / gradient.xml:
Esto le da negro - gris - negro (de izquierda a derecha), que es mi cajero automático de fondo oscuro favorito.
Recuerde agregar gradient.xml como fondo en su diseño xml:
También es posible rotar, con:
te da una línea vertical
y con
te da una línea horizontal
Los ángulos posibles son:
También hay algunos tipos diferentes de formas:
Forma redondeada:
y probablemente algunos más.
Espero que ayude, saludos!
fuente
En archivo dibujable XML:
En su archivo de diseño: android: background = "@ drawable / gradient_background"
fuente
Intenta eliminar android: gradientRadius = "90". Aquí hay uno que me funciona:
fuente
Mi problema fue que la extensión .xml no se agregó al nombre de archivo del archivo XML recién creado. Agregar la extensión .xml solucionó mi problema.
fuente
Con Kotlin puedes hacerlo en solo 2 líneas
Cambiar valores de color en la matriz
Resultado
fuente
No sé si esto ayudará a alguien, pero mi problema fue que estaba tratando de establecer el gradiente en la propiedad "src" de un ImageView así:
No estoy 100% seguro de por qué eso no funcionó, pero ahora lo cambié y puse el dibujo en la propiedad "background" del padre de ImageView, que es un RelativeLayout en mi caso, así: (esto funcionó con éxito)
fuente
Verificaría tu canal alfa en tus colores degradados. Para mí, cuando estaba probando mi código, tenía el canal alfa configurado incorrectamente en los colores y no funcionó para mí. Una vez que obtuve el canal alfa, ¡todo funcionó!
fuente
Puede usar una vista personalizada para hacer eso. Con esta solución, ha terminado las formas de degradado de todos los colores en sus proyectos:
También creo un proyecto de código abierto GradientView con esta vista personalizada:
https://github.com/lopspower/GradientView
fuente