Panayiotis Irakleous
Panayiotis Irakleous

Reputation: 2696

Circle button with shadow

I make a circle button with states and I want to add shadow to the button like the default buttons how I can do this? Here is my code:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">

        <shape android:shape="oval">
            <solid android:color="@color/yellow_pressed" />
            <stroke android:width="1dp" android:color="#fff" />
        </shape>
    </item>

    <item android:state_focused="true">
        <shape android:shape="oval">
            <solid android:color="@color/yellow_pressed" />
            <stroke android:width="1dp" android:color="#fff" />
        </shape>
    </item>


    <item>
        <shape android:shape="oval">
            <solid android:color="@color/yellow_default" />
            <stroke android:width="1dp" android:color="#fff" />
        </shape>
    </item>

</selector>

Upvotes: 2

Views: 9703

Answers (1)

android developer
android developer

Reputation: 116060

Starting from Lollipop, you can use:

public static void setOvalElevationToView(final View view) {
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP)
        view.setOutlineProvider(new ViewOutlineProvider() {
            @TargetApi(VERSION_CODES.LOLLIPOP)
            @Override
            public void getOutline(View view, Outline outline) {
                final int size = view.getWidth();
                outline.setOval(0, 0, size, size);
            }
        });
}

You might also need to disable clipping on the parent of the view, so that the shadows won't be clipped

Upvotes: 3

Related Questions