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