2010-02-22 75 views
8

我無法使用XML創建簡單的圓角矩形。每次我嘗試了「彎道」元素添加到自定義形狀,我得到:在 android.graphics.Path.addRoundRect(Path.java:514) Android - 無法創建簡單的矩形形狀... UnsupportedOperationException?

java.lang.UnsupportedOperationException 在 機器人.graphics.drawable.GradientDrawable.draw(GradientDrawable.java:314) 在 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> 

簡單layout.xml:

<?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> 

據透露,我試圖編譯Android 2.1的,我都安裝到Eclipse的最新動態和Android SDK。這種形狀是我在另一個網站上看到的東西的直接副本,但由於某種原因,它不想爲我工作。

謝謝。

+0

請參閱Shape元素及其屬性: http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape – vanna

回答

34

所以,我只是玩了一下,我在round_rectangle.xml中改了幾行來讓它工作。見下:

<?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> 

我只希望谷歌能推出一個適當的參考文檔來創建基於XML的形狀。在Web上搜索示例數小時(4+)之後,我覺得這仍然是猜測這些XML文檔中支持哪些元素/屬性的遊戲。對不起,迷你咆哮。

我希望這可以幫助別人。

+2

小挑剔,但使用像素(px)通常是一個糟糕的主意。應該可能是<角落android:radius =「30dp」/> – DougW

+2

它工作的原因是因爲您將4個單獨的半徑值合併爲1。請參閱此錯誤http://code.google.com/p/android/issues/細節?ID = 7588 –