在Android中将布局视图的背景颜色设置为渐变?

时间:2011-09-12 13:38:38

标签: android android-layout

如何指定Android布局视图元素的背景“颜色”应该是渐变(以特定角度)?

我希望在XML中指定它,即不在运行时。最好作为一种风格,我可以应用style属性的任何布局?

3 个答案:

答案 0 :(得分:81)

gradient.xml中创建/res/drawable

<?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"
        android:angle="45"/>    
</shape>

以及main.xml中的/res/layout布局文件:

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

您可以通过替换android:angleandroid:startColor

替换android:endColor值和开始/结束颜色来指定角度

答案 1 :(得分:9)

您可以使用以下内容:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
    <gradient android:startColor="#A1A1A1" 
              android:centerColor="#BDBDBD"
              android:endColor="#A4A4A4" 
              android:angle="-90" />
</shape>

构建渐变(您可以选择喜欢的颜色)。把它放在drawable中,你有自己的形状用作背景:android:background="@drawable/the_name_of_your_xml"

答案 2 :(得分:5)

这就是我设置渐变样式的方法。希望这可以帮助。但我已将它用于textview。你必须做一些改变以适应你的布局背景。

            Shader textShader = new LinearGradient(0, 0, 0, 20, new int[] {
            Color.WHITE, getResources().getColor(//some color),
            getResources().getColor(//some color), Color.WHITE },
            new float[] {  0.25f,0.50f,0.75f, 1 }, TileMode.CLAMP);
            textview.getPaint().setShader(textShader);