两种颜色的带状背景?

Nib*_*ain 13 android android-layout

我正在尝试使用如下背景创建一个底栏:

在此输入图像描述

我目前正在使用以下代码:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">


    <item>
        <shape>
            <gradient android:endColor="#000000" android:startColor="#696969"
                android:centerColor="#696969" android:angle="270" />
            <stroke android:color="#696969" />
            <padding android:left="2dp" android:top="3dp" android:right="2dp"
                android:bottom="3dp" />
        </shape>
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

但输出看起来像这样......:

在此输入图像描述

如何获得这个,两个彩色背景?请建议..谢谢

小智 22

正如其他人所指出的那样,在这种情况下,九个补丁是理想的(并且不会占用太多内存).使用XML并不是最佳选择.您可以尝试以下方法:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:bottom="20dp">
        <shape android:shape="rectangle" >
            <size android:height="20dp" />
            <solid android:color="#ff0000" />
        </shape>
    </item>

    <item android:top="20dp">
        <shape android:shape="rectangle" >
            <size android:height="20dp" />
            <solid android:color="#0000ff" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您的视图被认为是40dp高

它是一个包含两个不同颜色块的图层列表.XML方法的问题在于您无法将块的高度调整为百分比(= 50%).您必须在dp中使用实际视图大小的一半.这意味着每次更改视图高度/布局时都必须调整此drawable.九个补丁会自动调整.


Nik*_*ddy 6

在/ res/drawable中创建gradient.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FFFFFF"
        android:endColor="#00000000"/>    
</shape>
Run Code Online (Sandbox Code Playgroud)

并在/ res/layout中的main.xml布局文件中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/gradient">   
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

您可以通过更换指定的android的角度:角度值,通过更换开始/结束的颜色android:startColorandroid:endColor.