How can I work around Android issue 9161, where bottomRightRadius and bottomLeftRadius are swapped? How can I work around Android issue 9161, where bottomRightRadius and bottomLeftRadius are swapped? android android

How can I work around Android issue 9161, where bottomRightRadius and bottomLeftRadius are swapped?


Another solution is to create another folder called "drawable-v12".

In here put the correct radius (so bottomLeftRadius, topLeftRadius), and in the original drawable folder put in the swapped values. Then 3.1+ will use the v12 folder, and pre 3.1 versions will use the drawable folder.


This feels like such a hack, but it worked.

The buttons were originally made up of (1) an outer shadow, (2) a top-half gradient and (3) a bottom solid color. Here's what I did:

  1. Made the top and bottom halves each rounded on all four corners. This left (1) a gap in the middle of the left and right sides and (2) rounded corners on the right.
  2. Created a small rectangle to fill in the gap in the left middle.
  3. Created another small rectangle to both fill in the gap in the right middle and make the top and bottom corners on the right side square.

Here's an example of the XML for the normal state of the left button.

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">    <!-- Main part of button -->    <item        android:bottom="20dp"        android:right="5dp" >        <shape android:shape="rectangle">            <solid android:color="@color/button_normal_green_top" />            <corners android:radius="5dp" />        </shape>    </item>    <item        android:top="20dp"        android:right="5dp" >        <shape            android:shape="rectangle" >            <solid android:color="@color/button_normal_green_bottom" />            <corners android:radius="5dp" />        </shape>    </item>    <!-- Patch left middle part of button, which was left empty due to rounded     corners on top and bottom halves of button -->    <item        android:top="5dp"        android:bottom="20dp"        android:right="5dp" >        <shape android:shape="rectangle">            <solid android:color="@color/button_normal_green_top" />        </shape>    </item>    <item        android:top="20dp"        android:bottom="5dp"        android:right="5dp" >        <shape            android:shape="rectangle" >            <solid android:color="@color/button_normal_green_bottom" />        </shape>    </item>    <!-- Patch right middle and make right side corners square -->    <item        android:bottom="20dp"        android:left="15dp" >        <shape android:shape="rectangle">            <solid android:color="@color/button_normal_green_top" />        </shape>    </item>    <item        android:top="20dp"        android:left="15dp" >        <shape android:shape="rectangle" >            <solid android:color="@color/button_normal_green_bottom" />        </shape>    </item></layer-list>

I did, however, lose the gradient on the top half, but I can live with the two-tone button. Here's what the result looks like:
Two Buttons Solution


This appears to have been fixed in Android 3.0. And there's a comment on the issue that explains how to have backwards compatibility.