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.
- Degradado / sombra de Google Now en la barra de estado y la barra de navegación
- Uso de un gradienteDibujable con más de tres colores
- Gradiente de pan de jengibre
- Degradables de Android: mala calidad de las capturas de pantalla en Eclipse
- Alpha-gradient en Android
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í?
- Cómo hacer gradiente de fondo en android
- Gradiente de Android en Lollipop no funciona. - API 21
- Azure Mobile Services SDK disponible a través de Gradle para Android?
- Android-cómo hacer un gradiente de 4 colores de alta calidad?
- Especificación del nombre de archivo desplegado para el artefacto AAR en el proyecto de biblioteca de Android
- Publica la biblioteca de android en jcenter: gradle bintrayUpload no encuentra bibliotecas
- Cómo hacer un doble degradado con XML (iphone like)
- Cómo guardar, exportar o convertir un Android XML Drawable como un archivo de imagen PNG?
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>
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">