Android LinearLayout渐变背景

Gen*_*sis 235 android gradient android-layout 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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

如果我将@ drawable/header_bg更改为颜色 - 例如#FF0000,它可以正常工作.我错过了一些明显的东西吗?

Gen*_*sis 391

好的,我已设法使用选择器解决这个问题.见下面的代码:

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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助那些有同样问题的人.

  • 大.仅供参考,请参阅其他渐变类型:http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html#attr_android:type (5认同)

Sin*_*Þór 74

也可以具有第三种颜色(中心).和不同种类的形状.

例如在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>
Run Code Online (Sandbox Code Playgroud)

这给你黑色 - 灰色 - 黑色(从左到右),这是我最喜欢的黑暗背景atm.

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

android:background="@drawable/gradient"
Run Code Online (Sandbox Code Playgroud)

也可以旋转,具有:

角= "0"

给你一条垂直线

角= "90"

给你一条水平线

可能的角度是:

0,90,180,270.

还有几种不同的形状:

机器人:形状="矩形"

圆形:

机器人:形状="椭圆形"

还有一些问题.

希望它有所帮助,欢呼!


Pac*_*gmi 36

在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>
Run Code Online (Sandbox Code Playgroud)

在您的布局文件中: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>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Vin*_*rat 19

尝试删除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>
Run Code Online (Sandbox Code Playgroud)


Hit*_*ahu 12

使用 Kotlin,您只需 2 行即可完成此操作

更改数组中的颜色值

                  val gradientDrawable = GradientDrawable(
                        GradientDrawable.Orientation.TOP_BOTTOM,
                        intArrayOf(Color.parseColor("#008000"),
                                   Color.parseColor("#ADFF2F"))
                    );
                    gradientDrawable.cornerRadius = 0f;

                   //Set Gradient
                   linearLayout.setBackground(gradientDrawable);
Run Code Online (Sandbox Code Playgroud)

结果

在此处输入图片说明


kwa*_*ahn 6

我的问题是.xml扩展名没有添加到新创建的XML文件的文件名中.添加.xml扩展名修复了我的问题.