Figura 1: El objetivo
tanto, antes de que sabía sobre el tema, esto es lo que he intentado.
En primer lugar, un diseño de base:
<LinearLayout
android:orientation="horizontal"
android:layout_below="@id/heading"
android:layout_marginTop="10dp"
android:layout_width="@dimen/horizontal_two_button_width"
android:layout_height="@dimen/button_height_small" >
<Button
android:id="@+id/button_one"
android:layout_width="0dp"
android:layout_weight="1.0"
android:layout_height="fill_parent"
android:padding="10dp"
style="@style/ButtonText"
android:background="@drawable/button_left_green" />
<Button
android:id="@+id/button_two"
android:layout_width="0dp"
android:layout_weight="1.0"
android:layout_height="fill_parent"
android:padding="10dp"
style="@style/ButtonText"
android:background="@drawable/button_right_green" />
</LinearLayout>
El 'button_left_green' dibujable:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_left_green_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/button_left_green_focused"
android:state_focused="true" />
<item android:drawable="@drawable/button_left_green_default" />
</selector>
Y, por ejemplo, el 'button_left_green_default' dibujable:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/shadow" />
<corners
android:radius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="0dp"
android:bottomLeftRadius="5dp"
android:bottomRightRadius="0dp" />
</shape>
</item>
<item
android:bottom="19dp"
android:top="1dp"
android:left="1dp"
android:right="1dp" >
<shape android:shape="rectangle">
<gradient
android:startColor="@color/button_left_green_top_gradient_start"
android:endColor="@color/button_left_green_top_gradient_end"
android:angle="270" />
<corners
android:radius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp" />
</shape>
</item>
<item
android:top="19dp"
android:bottom="1dp"
android:left="1dp"
android:right="1dp" >
<shape android:shape="rectangle" >
<solid android:color="@color/button_left_green_bottom_gradient" />
<corners
android:radius="5dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp"
android:bottomLeftRadius="5dp"
android:bottomRightRadius="0dp" />
</shape>
</item>
</layer-list>
Por lo tanto, después de todo eso, obtuve la imagen en la Figura 2:
Figura 2: Tomar una
Después de doble comprobación de la definición de las esquinas inferiores, estaba convencido de que estaba loco hasta que encontré el problema conocido: http://code.google.com/p/android/issues/detail?id=9161
prefiero no sólo cambio ellos, porque si/cuando el problema se soluciona, los botones se romperán en las versiones más nuevas.
Una idea que tuve fue dejar los botones reales como rectángulos regulares (es decir, sin radios de esquina) y envolviendo ambos botones con un rectángulo redondeado. Agregué un fondo dibujable a LinearLayout que tenía esquinas redondeadas, pero las esquinas de los botones se superponían al borde del borde redondeado LinearLayout (ver Figura 3).
Figura 3: Tomar dos
¿Cómo puedo mantener los antecedentes del botón dentro de los límites de fondo dibujable de su padre? ¿O tienes alguna otra sugerencia sobre cómo solucionar el error?
Bueno, me enfrenté al mismo problema. Simplemente continué y los cambié en consecuencia con la esperanza de que si se soluciona un día, mi aplicación no es la única que sufre de ella :) – harism
@harismo: también los cambié en una aplicación. PERO: en dispositivos> = Honeycomb ahora están equivocados (¿o debería decir correcto?: D) así que intercambiarlos no es una buena solución. –