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

Bja*_*sen 27 android android-layout

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

我希望在XML中指定它,即不在运行时.最好作为一种风格,我可以申请任何我希望与style财产的布局?

Don*_*Gru 84

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

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

可以通过更换指定角度android:angle值和通过更换开始/结束颜色android:startColorandroid:endColor


Aur*_*una 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>
Run Code Online (Sandbox Code Playgroud)

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


And*_*lva 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);
Run Code Online (Sandbox Code Playgroud)

  • 虽然他在问题中提到他想要一个xml解决方案,而不是运行时解决方案 (2认同)