10

I'm having trouble creating a simple rounded rectangle using XML. Every time I try to add the "corners" element to the custom shape I get:

java.lang.UnsupportedOperationException at android.graphics.Path.addRoundRect(Path.java:514) at android.graphics.drawable.GradientDrawable.draw(GradientDrawable.java:314) at android.view.View.draw(View.java:6520) ...

res/dawable/rounded_rectangle.xml:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
        <solid android:color="#ffffff"/>    

        <stroke android:width="3dp"
                android:color="#ff000000"/>

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

        <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp" android:topRightRadius="7dp"/> 
    </shape>

simple layout.xml using the above shape:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent">

<View android:id="@+id/View01" 
    android:background="@drawable/rounded_rectangle" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">
</View>
</RelativeLayout>

Fyi, I'm trying to compile for Android 2.1 and I have all the latest updates installed to Eclipse and the Android SDK. This shape is a direct copy of something I saw on another website, but for some reason It doesn't want to work for me.

Thanks.

Google
  • 2,183
  • 3
  • 27
  • 48
RyanM
  • 5,680
  • 9
  • 45
  • 55
  • See Shape element and its attributes here: http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape – vanna Aug 26 '10 at 14:09

1 Answers1

36

So, I was just playing around with this a bit and I changed a couple of lines in the rounded_rectangle.xml to get it working. See below:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <solid android:color="#ffffff"/>    

    <stroke android:width="3dp"
            android:color="#ff000000"/>

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

    <corners android:radius="30dp"/> 
</shape>

I only wish Google would put out a proper reference doc for creating XML-based shapes. After hours (4+) of hunting down examples on the Web, I feel like it's still a guessing game as to what elements/attributes are supported in these types of XML documents. Sorry for the mini-rant.

I hope this helps someone else.

Artem Russakovskii
  • 21,516
  • 18
  • 92
  • 115
RyanM
  • 5,680
  • 9
  • 45
  • 55
  • 2
    Small nitpick, but using pixels (px) is generally a bad idea. Should probably be – DougW Sep 13 '10 at 02:11
  • 3
    The reason it worked is because you collapsed the 4 individual radius values into 1. See this bug http://code.google.com/p/android/issues/detail?id=7588 – Artem Russakovskii Nov 11 '10 at 02:01