Android – dibujable con esquinas redondeadas en la parte superior solamente
Tenía esto dibujable para tener un rectángulo redondeado como fondo:
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/white" /> <stroke android:width="1dp" android:color="@color/light_gray" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> <corners android:radius="6dp" /> </shape>
Esto está funcionando bien, como se esperaba.
- ¿Cómo agregar las esquinas redondeadas al traslúcido de fondo de la actividad?
- Antialiased esquinas redondeadas en Android ImageView
- Botón redondeado en Android
- Esquinas redondeadas para una vista de imagen en android
- ¿Cómo puedo solucionar el problema de Android 9161, donde se intercambian bottomRightRadius y bottomLeftRadius?
Ahora, quiero cambiar esto a sólo alrededor de las esquinas superiores, así que lo cambio a esto:
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/white" /> <stroke android:width="1dp" android:color="@color/light_gray" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> <corners android:topLeftRadius="6dp" android:topRightRadius="6dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp"/> </shape>
Pero ahora ninguno de los rincones son redondeados y consigo un rectángulo llano. ¿Que me estoy perdiendo aqui?
- Posibilidad de hacer esquinas redondeadas en la progresión Progressbar personalizada ¿Dibujable?
- ¿Cómo configurar el color de selección del botón junto con las esquinas redondeadas en Android?
- Android: dar una vista web esquinas redondeadas?
- Prácticas recomendadas para rectángulos redondeados en OpenGL ES
- Disposición de esquina redonda de Android en el cuadro de diálogo
- Cómo corregir las esquinas redondeadas en Android para Relative o bien en el diseño?
- Mapa de bits en ImageView con esquinas redondeadas
- ¿Cómo agregar la esquina redondeada a un drawable que estoy utilizando como fondo en Android?
Intente dar estos valores:
<corners android:topLeftRadius="6dp" android:topRightRadius="6dp" android:bottomLeftRadius="0.1dp" android:bottomRightRadius="0.1dp"/>
Tenga en cuenta que he cambiado 0dp
a 0.1dp
.
EDIT: Ver el comentario de Alex a continuación para una versión más limpia
Trate de hacer algo como esto:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="-20dp" android:left="-20dp"> <shape android:shape="rectangle"> <solid android:color="@color/white" /> <corners android:radius="20dp" /> </shape> </item> </layer-list>
Parece que no es adecuado para establecer diferentes radio de la esquina del rectángulo. Así que puedes usar este hack.
Basándose en la respuesta de busylee , esto es como se puede hacer un drawable
que sólo tiene una esquina redondeada (arriba a la izquierda, en este ejemplo):
<?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/white" /> <!-- A numeric value is specified in "radius" for demonstrative purposes only, it should be @dimen/val_name --> <corners android:radius="10dp" /> </shape> </item> <!-- To keep the TOP-LEFT corner UNROUNDED set both OPPOSITE offsets (bottom+right): --> <item android:bottom="10dp" android:right="10dp"> <shape android:shape="rectangle"> <solid android:color="@color/white" /> </shape> </item> </layer-list>
Tenga en cuenta que el drawable
anterior no se muestra correctamente en la vista previa de Android Studio (2.0.0p7). Para obtener una vista previa de todos modos, cree otra vista y utilícela como android:background="@drawable/..."
.
En mi caso, debajo del código
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="10dp" android:bottom="-10dp" > <shape android:shape="rectangle"> <solid android:color="@color/maincolor" /> <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp" /> </shape> </item> </layer-list>
Intenté su código. Tengo un botón de esquina superior redondeado. Di los colores como @ffffff y srtoke di # C0C0C0. Intente 1) dando android: bottomLeftRadius = "0.1dp" en lugar de 0. si su funcionamiento no 2) compruebe en qué dramático y la resolución de los emuladores. I creó una carpeta dibujable en res y utilizarlo. (Hdpi, mdpi ldpi) carpeta que tiene este xml. Esta es mi salida
Puede que necesite leer esta https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
Y abajo hay una Nota.
Nota Cada esquina debe (inicialmente) ser proporcionada un radio de esquina mayor que 1, o bien no hay esquinas redondeadas. Si desea que las esquinas específicas no se redondeen, una solución es usar android: radio 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 desea esquinas redondeadas.