Ali
Ali

Reputation: 2768

Bottom Rounded Corners - Android

I have been trying to fix this but for whatever I do, I just cannot get the Bottom Rounded Corners the way I want, I am using the following

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape android:shape="rectangle">
            <stroke android:width="0dp"  />
            <solid android:color="?attr/colorPrimaryDark"  />
      </shape>
   </item>
   <item android:top="0dp" android:bottom="1dp"> 
      <shape 
        android:shape="rectangle">
            <stroke android:width="0dp"/>
            <solid android:color="?attr/colorPrimary"/>
             <corners android:radius="15dp" android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="0dp" android:topRightRadius="0dp"/> 
        </shape>
   </item>
</layer-list> 

The Results are the following

Screenshot

It creates the corners but it adds grey color (colorPrimaryDark) to it where I want it to be white (colorPrimary") with a grey line - Any idea how I accomplish this?

Upvotes: 0

Views: 1146

Answers (2)

Sergey Glotov
Sergey Glotov

Reputation: 20346

A little hack is possible to get rid of line on top and sides: set negative offsets.

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

    <item
            android:left="-1dp"
            android:right="-1dp"
            android:top="-1dp">
        <shape android:shape="rectangle">
            <stroke
                    android:width="1dp"
                    android:color="?attr/colorPrimaryDark" />
            <solid android:color="?attr/colorPrimary" />
            <corners
                    android:bottomLeftRadius="15dp"
                    android:bottomRightRadius="15dp"
                    android:radius="15dp"
                    android:topLeftRadius="0dp"
                    android:topRightRadius="0dp" />
        </shape>
    </item>

</layer-list>

Not sure will it work correctly on all devices / Android versions or not.

Upvotes: 1

SpiritCrusher
SpiritCrusher

Reputation: 21053

If you only want bottom border a Shape drawable will be enough . You do not need a layer-list for it . try this

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="1dp" android:color="@color/green"/>
<solid android:color="?attr/colorPrimary" />
<corners
        android:bottomLeftRadius="15dp"
        android:bottomRightRadius="15dp" />
</shape>

The problem with your current code is first item have a solid color set . this is why the gray part showing .

Upvotes: 1

Related Questions