Android LinearLayout Gradiente de fondo

Tengo problemas para aplicar un fondo degradado a un LinearLayout.

Esto debería ser relativamente simple de lo que he leído, pero simplemente no parece funcionar. Por motivos de referencia estoy desarrollando en 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 – eg # FF0000 funciona perfectamente bien. ¿Estoy perdiendo algo obvio aquí?

Ok he conseguido solucionar esto usando un selector. Vea el código abajo:

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/main_header_selector"> </LinearLayout> 

Main_header_selector.xml:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:angle="90" android:startColor="#FFFF0000" android:endColor="#FF00FF00" android:type="linear" /> </shape> </item> </selector> 

Esperemos que esto ayude a alguien que tiene el mismo problema.

También es possiple tener el tercer color (centro). Y diferentes tipos de formas.

Por ejemplo en drawable / gradient.xml:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:startColor="#000000" android:centerColor="#5b5b5b" android:endColor="#000000" android:angle="0" /> </shape> 

Esto le da negro – gris – negro (de izquierda a derecha) que es mi favorit fondo oscuro atm.

Recuerde agregar gradient.xml como fondo en su diseño xml:

 android:background="@drawable/gradient" 

También es posible girar, con:

Angle = "0"

Le da una línea vertical

y con

Angle = "90"

Le da una línea horizontal

Los ángeles posibles son:

0, 90, 180, 270.

También hay pocas clases diferentes de formas:

Android: shape = "rectangle"

Forma redondeada:

Androide: shape = "oval"

Y probablemente unos cuantos más.

Espero que ayude, saludos!

Prueba a eliminar android: gradientRadius = "90". Aquí está uno que trabaja para mí:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:startColor="@color/purple" android:endColor="@color/pink" android:angle="270" /> </shape> 

Mi problema era 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.

En XML Dibujable Archivo:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:angle="90" android:endColor="#9b0493" android:startColor="#38068f" android:type="linear" /> </shape> </item> </selector> 

En el archivo de diseño: android: background = "@ drawable / gradient_background"

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/gradient_background" android:orientation="vertical" android:padding="20dp"> ..... </LinearLayout> 

Introduzca aquí la descripción de la imagen

Comprobaría su canal alfa en sus colores del gradiente. Para mí, cuando estaba probando mi código, tuve el canal alfa puesto mal en los colores y no funcionó para mí. Una vez que conseguí el canal alfa establecido que todo funcionó!

No sé si esto ayudará a cualquiera, pero mi problema era yo estaba intentando fijar el gradiente a la característica del "src" de un ImageView así:

 <ImageView android:id="@+id/imgToast" android:layout_width="wrap_content" android:layout_height="60dp" android:src="@drawable/toast_bg" android:adjustViewBounds="true" android:scaleType="fitXY"/> 

No estoy 100% seguro de por qué no funcionó, pero ahora lo cambié y poner el dibujable en la propiedad "background" del padre de ImageView, que es un RelativeLayout en mi caso, así: (esto funcionó correctamente)

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:id="@+id/custom_toast_layout_id" android:layout_height="match_parent" android:background="@drawable/toast_bg"> 
  • Android dibujable con fondo y degradado a la izquierda
  • Gradiente circular en android
  • ¿Soporta Android la progresión no lineal en gradientes?
  • Android gradle uploadArchives al construir
  • Android crear iphone-como Gradiente
  • Android: Fondo de degradado de AppBarLayout
  • Gradle plugin 'com.android.library' no busca en los depósitos personalizados de maven
  • Cómo obtener de forma programática una lista de colores de un degradado en Android
  • Crear programaticamente fondo textview desde drawable en android
  • Cómo subir varios archivos de Android (uno para cada sabor)
  • Android gradiente radial
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.