2011-05-24 10 views
10

Es necesario disponer de un fondo que ha redondeado coners inferior izquierda/derecha (pero no superior izquierda/los correctos), a continuación es mi archivo xml:androide: esquinas de forma no funcionan cuando se configura esquinas individuales

<?xml version="1.0" encoding="utf-8"?> 
<layer-list 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="rectangle" android:padding="1dp"> 
     <solid android:color="#FFbdbebd"/> 
     <corners 
      android:bottomLeftRadius="12dip" 
      android:bottomRightRadius="12dip" 
      android:topLeftRadius="0dip" 
      android:topRightRadius="0dip"/> 
    </shape> 
</item> 
</layer-list> 

Pero el resultado es un rectángulo plano sin ninguna esquina redondeada, si yo sólo uso:

android:radius="12dip" 

luego se redondean todas las esquinas, lo buscado y encontrado un error relacionado con esto:

http://code.google.com/p/android/issues/detail?id=9161

pero los estados de errores:

izquierda/derecha se alterna, debido androide: bottomRightRadius = "2DP" resultó para especificar esquina redondeada inferior izquierda.

que puede no ser relavent a mi problema, yo también trató de usar:

android:radius="12dip" 

seguido por

android:topLeftRadius="0dip" 
android:topRightRadius="0dip" 

sin éxito.

¿Alguien puede ayudar? ¡Gracias!

Respuesta

2

He encontrado que puede haber un error que si establece esquinas individuales, y si alguno de ellos es 0, todos ellos se convierten en 0, así que al final me puse dos de ellos para 1dip y otros dos a todo lo que necesito, ya que ninguno de ellos es 0, por lo que el error no lo afecta y el resultado se ve bien.

+0

No es un error. Es como se describe en la guía de desarrollo. – jterm

-9

intente esto es su trabajo para mí.

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" android:padding="10dp"> 
     <solid android:color="#FFFFFF"/> 
     <corners 
      android:bottomRightRadius="30dp" 
      android:bottomLeftRadius="30dp" 
      android:topLeftRadius="30dp" 
      android:topRightRadius="30dp"/> 
</shape> 
+0

Si ajusto cuatro esquinas para que sean redondeadas, también funcionan para mí, pero la pregunta es: solo quiero redondear las dos esquinas inferiores que no funcionaron. – hzxu

5

Parece ser un problema conocido. Cada esquina debe ser> 1 o bien no se redondearán las esquinas. De acuerdo con la documentación de Android, se puede hacer, pero es algo raro:

Nota: Cada esquina debe proporcionar (inicialmente) un radio de esquina mayor que 1, o bien no se redondean las esquinas. Si desea que las esquinas específicas no se redondeen, una solución alternativa es usar android: radius para establecer un radio de esquina predeterminado mayor que 1, pero luego anular cada esquina con los valores que realmente desea, proporcionando cero ("0dp") donde no quieres> esquinas redondeadas.

Ver aquí: http://developer.android.com/guide/topics/resources/drawable-resource.html#corners-element

5

cambiar esta situación:

<corners 
     android:bottomRightRadius="12dp" 
     android:bottomLeftRadius="12dp" 
     android:topLeftRadius="0dp" 
     android:topRightRadius="0dp"/> 

a esto:

<corners 
     android:radius="1dp" 
     android:bottomRightRadius="12dp" 
     android:bottomLeftRadius="12dp" 
     android:topLeftRadius="0dp" 
     android:topRightRadius="0dp"/> 

y debería estar funcionando como se esperaba.

+0

android: radius = "1dp" hará que todo el radio de la esquina sea de 1dp. – Sujit