Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why i am not able to create the round border for specific corner?

In My android xml layout i am applying the border by using the borderframe.xml as a background.

borderframe.xml file is looks like below:

    <?xml version="1.0" encoding="UTF-8"?>
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke 
        android:width="1dip" 
        android:color="#ffffff"/>
    <solid 
        android:color="#95865F"/>
    <corners 
        android:radius="10px"/>

    <padding 
        android:left="1dp"
        android:right="1dp"
        android:top="1dp"
        android:bottom="1dp"/> 
</shape>

Now, While there is a android:radius="10px" then it is works but while i am going to give round shape to specific corner only then it not works. There is no any erro message in log cat but i found error in eclipse like:

    The graphics preview in the layout editor may not be accurate:
* Different corner sizes are not supported in Path.addRoundRect.

Even if there is no padding in that xml file then also i am not able to see any border.

Now, what should i have to do for it ? and whats the sollution of it if i want to create the rounded border for only topLeftcorner and bottomLeftCorner. ? Thanks.

like image 867
Shreyash Mahajan Avatar asked Dec 06 '11 11:12

Shreyash Mahajan


People also ask

How do I fix border-radius in CSS?

CSS Syntaxborder-top-right-radius: length|% [length|%]|initial|inherit; Note: If you set two values, the first one is for the top border, and the second one for the right border. If the second value is omitted, it is copied from the first. If either length is zero, the corner is square, not rounded.


2 Answers

I am also facing the same problem. But for that I use layer-list. I post my answer here which may help you.
Please check output screen image 1

<?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="1dp" android:color="#c1c1c1" />
            <solid android:color="#c1c1c1" />
            <corners android:radius="20dp"/>
        </shape>
   </item>

   <item android:right="20dp"
        >
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#c1c1c1" />
            <solid android:color="#c1c1c1" />
        </shape>
   </item>

</layer-list>
like image 75
Amol Wadekar Avatar answered Sep 28 '22 05:09

Amol Wadekar


You'll have to do that, assuming you only want a rounded top left corner:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
  <corners
      android:radius="20sp"
      android:topRightRadius="0dp"
      android:bottomRightRadius="0dp"
      android:bottomLeftRadius="0dp" />
  <gradient
      android:startColor="@color/logo_blue"
      android:endColor="@color/blue"
      android:angle="0"/>
</shape>

Explanation: Every corner must (initially) be provided a corner radius greater than 1, or else no corners are rounded. If you want specific corners to not be rounded, a work-around is to use android:radius to set a default corner radius greater than 1, but then override each and every corner with the values you really want, providing zero ("0dp") where you don't want rounded corners. [source]

As a consequence, you need to define your drawable as:

<?xml version="1.0" encoding="UTF-8"?>
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke 
        android:width="1dip" 
        android:color="#ffffff"/>
    <solid 
        android:color="#95865F"/>
    <corners 
       android:radius="10px"
      android:topRightRadius="0dp"
      android:bottomRightRadius="0dp" />

    <padding 
        android:left="1dp"
        android:right="1dp"
        android:top="1dp"
        android:bottom="1dp"/> 
</shape>

Update

From The Shape Drawable Resource Android Documentation:

android:radius Dimension. The radius for all corners, as a dimension value or dimension resource. This is overridden for each corner by the following attributes.

overridden is the keyword for your problem…

like image 34
Renaud Avatar answered Sep 28 '22 04:09

Renaud