Android的LinearLayout渐变背景

我无法对LinearLayout应用渐变背景。

这应该是相对简单的,因为我已经阅读,但它似乎并没有工作。 有关参考资料,我正在开发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> 

如果我将@ drawable / header_bg更改为一种颜色 – 例如#FF0000,它可以很好地工作。 我在这里错过了很明显的东西吗

好吧,我设法解决这个使用select器。 见下面的代码:

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> 

希望这可以帮助有同样问题的人。

也有可能有第三种颜色(中心)。 和不同种类的形状。

例如在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> 

这给你黑 – 灰 – 黑(从左到右)这是我最喜欢的黑暗背景atm。

请记住在布局xml中添加gradient.xml作为背景:

 android:background="@drawable/gradient" 

也可以旋转,具体如下:

angular= “0”

给你一个垂直线

angular= “90”

给你一个水平线

可能的angular度是:

0,90,180,270。

也有几种不同的形状:

机器人:形状=“矩形”

圆形:

机器人:形状=“椭圆形”

可能还有一些。

希望它有帮助,欢呼!

尝试删除android:gradientRadius =“90”。 这是对我有用的一个:

 <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> 

我的问题是.xml扩展名没有添加到新创build的XML文件的文件名。 添加.xml扩展名解决了我的问题。

在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:endColor="#9b0493" android:startColor="#38068f" android:type="linear" /> </shape> </item> </selector> 

在你的布局文件中: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> 

在这里输入图像说明

我会检查你的渐变颜色的alpha通道。 对我来说,当我testing我的代码时,我的alpha通道设置了错误的颜色,它不适合我。 一旦我得到了alpha通道设置它一切工作!

我不知道这是否会帮助任何人,但我的问题是我试图设置渐变到ImageView的“src”属性,如下所示:

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

不是100%确定为什么这不起作用,但现在我改变它,并把绘制在ImageView的父母,这是一个RelativeLayout在我的情况,“背景”属性,如下所示:(这工作成功)

 <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">