versiones pie oreo developer caracteristicas android

pie - android versiones



Esquinas interiores redondeadas con marco interior transparente. (3)

Ajustando la solución @Nima K, para evitar usar una vista extra

crear frame.xml @ drawable

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="-10dp" android:left="-10dp" android:right="-10dp" android:top="-10dp"> <shape android:shape="rectangle"> <stroke android:width="20dp" android:color="@color/frame_color" /> <corners android:radius="30dp" /> </shape> </item> <item> <shape android:shape="rectangle"> <solid android:color="@android:color/transparent" /> <stroke android:width="20dp" android:color="@color/frame_color" /> <corners android:radius="40dp" /> </shape> </item> </layer-list>

Luego úselo con el atributo ''dibujable'' de su vista

<TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/frame" />

Y este es el resultado

Estoy tratando de hacer un marco a partir de un código para poder aplicarlo para hacer esquinas interiores redondeadas con un relleno sólido por fuera y transparente por dentro. Al igual que un rectángulo sólido con óvalo transparente en el interior. foto adjunta He probado algunas combinaciones de formas, todo lo que está disponible en línea muestra las esquinas de afuera.

El interior debe ser transparente, no blanco. La imagen se tomó de este post pero la solución presentada aquí no es lo que estoy buscando. No quiero usar un parche dibujable de 9, pero me gustaría crearlo en código.

Por favor solo respuestas validas


crea el siguiente rounded_corner.xml:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="-10dp" android:left="-10dp" android:right="-10dp" android:top="-10dp"> <shape android:shape="rectangle"> <stroke android:width="10dp" android:color="#ffffff" /> <corners android:radius="20dp" /> </shape> </item> </layer-list>

agregue esto debajo de su imageView, que desea aplicarle el marco:

<View android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignBottom="@+id/my_image_view" android:layout_alignLeft="@id/my_image_view" android:layout_alignRight="@+id/my_image_view" android:layout_alignTop="@id/my_image_view" android:background="@drawable/rounded_corner" />


En primer lugar, cree 3 xml en una carpeta dibujable:

  1. Primero: frame.xml
  2. Segundo: frame_build.xml
  3. Tercero: red.xml

(Puedes cambiar este nombre como desees),

frame.xml:

<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="20dp" android:drawable="@drawable/red" android:top="-25dp" /> <item android:bottom="15dp" android:drawable="@drawable/frame_build" android:top="5dp" android:left="-5dp" android:right="-5dp" /> </layer-list>

frame_build.xml:

<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> <corners android:radius="40dp" /> </shape>

red.xml

<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <stroke android:width="40dp" android:height="40dp" android:color="#B22222" /> <padding android:left="8dp" android:top="-1dp" android:right="8dp" android:bottom="9dp" /> <corners android:radius="-10dp" /> </shape>

Finalmente, refiera su vista o diseño a Frame XML de la siguiente manera:

android:background="@drawable/frame"

Esto probado y salida como abajo imagen:

Espero que esto ayude .