Android shape border with gradient

前端 未结 5 788
小蘑菇
小蘑菇 2020-12-01 07:48

I want to create a border for a linearLayout. So I decide to create a shape. I want the border to have a gradient. The following is not doing it. It fills the rectangle and

相关标签:
5条回答
  • 2020-12-01 07:55

    This would be the appropriate solution to what you wanna do. It includes gradient in stroke as well as a gradient in fill colour.

    <?xml version="1.0" encoding="utf-8"?>
        <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
            <item>
                <shape >
                    <gradient
                        android:startColor="#2196F3"
                        android:endColor="#673AB7"
                        android:angle="270" />
                    <stroke
                        android:width="0dp"
                        android:color="@color/transparentColor" />
                    <corners
                        android:radius="8dp" />
                    <padding
                        android:left="2dp"
                        android:right="2dp"
                        android:top="2dp"
                        android:bottom="2dp" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
    
                </shape>
            </item>
            <item android:top="0dp">
                <shape>
                    <gradient
                        android:startColor="#FBB100"
                        android:endColor="#FF9900"
                        android:angle="270"/>
    
                    <corners
                        android:radius="8dp" />
                </shape>
            </item>
        </layer-list>
    
    0 讨论(0)
  • 2020-12-01 07:56

    try something like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item>
            <shape android:shape="rectangle" >
                <gradient
                    android:angle="360"
                    android:centerColor="#e95a22"
                    android:endColor="#ff00b5"
                    android:gradientRadius="360"
                    android:startColor="#006386"
                    android:type="sweep" />
    
                <stroke
                    android:width="2dp"
                    android:color="#ff207d94" />
            </shape>
        </item>
        <item
            android:bottom="2dp"
            android:left="2dp"
            android:right="2dp"
            android:top="2dp">
            <shape android:shape="rectangle" >
                <solid android:color="#fff" />
            </shape>
        </item>
    
    </layer-list>
    
    0 讨论(0)
  • 2020-12-01 07:56

    This extra source should fix your problem

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="rectangle">
                <gradient
                    android:angle="360"
                    android:centerColor="#e95a22"
                    android:endColor="#ff00b5"
                    android:gradientRadius="360"
                    android:startColor="#006386"
                    android:type="sweep" />
                <size android:height="170dp"
                    android:width="170dp"/>
            </shape>
        </item>
        <item android:top="2dp" android:bottom="2dp" android:right="2dp" android:left="2dp">
            <shape android:shape="rectangle">
                <size android:width="140dp"
                    android:height="140dp"/>
                <solid android:color="@color/colorAccent"/>
                <solid android:color="@color/white"/>
            </shape>
        </item>
    </layer-list>
    
    0 讨论(0)
  • 2020-12-01 08:03

    since the accepted answer didn't work exactly as i wanted it to work for me, i'll post my solution too, maybe it helps someone else :)

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item>
    <!-- create gradient you want to use with the angle you want to use -->
        <shape android:shape="rectangle" >
            <gradient
                android:angle="0"
                android:centerColor="@android:color/holo_blue_bright"
                android:endColor="@android:color/holo_red_light"
                android:startColor="@android:color/holo_green_light" />
    
        </shape>
    </item>
    <!-- create the stroke for top, left, bottom and right with the dp you want -->
    <item
        android:bottom="2dp"
        android:left="2dp"
        android:right="2dp"
        android:top="2dp">
        <shape android:shape="rectangle" >
            <!-- fill the inside in the color you want (could also be a gradient again if you want to, just change solid to gradient and enter angle, start, maybe center, and end color) -->
            <solid android:color="#fff" />
        </shape>
    </item>
    
    </layer-list>
    
    0 讨论(0)
  • 2020-12-01 08:07

    This will create a layout with top border of 2dp. just set it as a background to your layout

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="rectangle">
                <gradient
                    android:startColor="#4fc949"
                    android:centerColor="#0c87c5"
                    android:endColor="#b4ec51"
                    android:angle="180" />
            </shape>
        </item>
        <item android:top="2dp">
            <shape android:shape="rectangle">
                <solid android:color="@color/background_color"/>
            </shape>
        </item>
    </layer-list>
    
    0 讨论(0)
提交回复
热议问题