Esquina redondeada para textview en android


171

Tengo una vista de texto y quiero que su esquina tenga forma redonda. Ya sé que se puede hacer usando android:background="@drawable/somefile". En mi caso, esta etiqueta ya está incluida, por lo que no puedo volver a usarla. por ejemplo, android:background="@drawable/mydialogbox"ya está allí para crear una imagen de fondo

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="top"
    android:background="@drawable/mydialogbox"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textview_name"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    </LinearLayout>

</RelativeLayout>

Entonces, cuando quiero textview(textview_name)también con la esquina redonda, cómo se puede lograr esto.


44
si recibió su respuesta, entonces acepte la respuesta para que otros puedan obtener ayuda de su contribución
— MilapTank

Respuestas:


438

1) Cree rounded_corner.xmlen la drawablecarpeta y agregue el siguiente contenido,

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >         
   <stroke
          android:width="1dp"
          android:color="@color/common_border_color" />

   <solid android:color="#ffffff" />

   <padding
           android:left="1dp"
           android:right="1dp"
           android:bottom="1dp"
           android:top="1dp" />

   <corners android:radius="5dp" />
</shape>

2) Establezca este dibujable en la TextViewpropiedad de fondo, por ejemplo:

android:background="@drawable/rounded_corner"

Espero que esto sea útil para ti.


16
La respuesta es correcta solo que el tipo que publicó no lo explicó en detalle. Necesita crear un xml [por ejemplo. rounded_view.xml] en su carpeta dibujable con el código anterior. Y en su diseño que rodea su vista de texto, ponga esto como parámetro android: background = "@ drawable / rounded_view"
— Sharjeel Ahmed

44
android: background = "@ drawable / rounded_corner" ¡no use la extensión aquí!
— Boris Gafurov

44
Agregue android:shape="rectangle"si no funcionó para usted
— kristyna

Y reconstruya su proyecto si no funcionó automáticamente
— adek111

18

Al lado radius, hay una cierta característica de esquina redonda como topRightRadius, topLeftRadius, bottomRightRadius,bottomLeftRadius

Ejemplo TextViewcon fondo de redborde with corner andgris`

bg_itated.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="10dp"
        android:color="#f00" />

    <solid android:color="#aaa" />

    <corners
        android:radius="5dp"
        android:topRightRadius="100dp" />
</shape>

Vista de texto

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/bg_rounded"
    android:text="Text"
    android:padding="20dp"
    android:layout_margin="10dp"
    />

Resultado

ingrese la descripción de la imagen aquí


16

Dado que su vista de nivel superior ya tiene un conjunto de propiedades android: fondo, puede usar un <layer-list>( enlace ) para crear un nuevo dibujo XML que combine tanto su fondo anterior como su nuevo fondo de esquinas redondeadas.

Cada <item>elemento de la lista se dibuja sobre el siguiente, por lo que el último elemento de la lista es el que termina en la parte superior.

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <bitmap android:src="@drawable/mydialogbox" />
    </item>
    <item>
        <shape>
            <stroke
                android:width="1dp"
                android:color="@color/common_border_color" />

            <solid android:color="#ffffff" />

            <padding
                    android:left="1dp"
                    android:right="1dp"
                    android:top="1dp" />

            <corners android:radius="5dp" />
        </shape>
    </item>
</layer-list>

6

crear un archivo xml gradient.xml en una carpeta dibujable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle"  >
            <corners android:radius="50dip" />
            <stroke android:width="1dip" android:color="#667162" />
            <gradient android:angle="-90" android:startColor="#ffffff" android:endColor="#ffffff" />
        </shape>
    </item>
</selector>

luego agregue esto a su TextView

android:background="@drawable/gradient"

6
  1. Haga clic derecho en la carpeta dibujable y cree un nuevo archivo
  2. Nombra el archivo de acuerdo a ti y agrega la extensión como .xml .
  3. Agregue el siguiente código en el archivo
  <?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle">
      <corners android:radius="5dp" />
      <stroke android:width="1dp"  />
      <solid android:color="#1e90ff" />
  </shape>
  1. Agregue la línea donde desea el borde redondeado android:background="@drawable/corner"

4

Puede usar la forma del rectángulo proporcionada (sin degradado, a menos que desee una) de la siguiente manera:

En drawable/rounded_rectangle.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="5dp" />
    <stroke android:width="1dp" android:color="#ff0000" />
    <solid android:color="#00ff00" />
</shape>

Luego, en su vista de texto:

android:background="@drawable/rounded_rectangle"

Por supuesto, querrás personalizar las dimensiones y los colores.


4

Hay dos pasos

1) Cree este archivo en su carpeta dibujable: - rounded_corner.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
         <corners android:radius="10dp" />  // set radius of corner
         <stroke android:width="2dp" android:color="#ff3478" /> // set color and width of border
         <solid android:color="#FFFFFF" /> // inner bgcolor
</shape>

2) Establezca este archivo en su TextViewpropiedad de fondo.

android:background="@drawable/rounded_corner"

Puede usar este dibujo en Button o Edittext también


3
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dp" />
            <solid android:color="#ffffff"/>

        </shape>
    </item>
</layer-list>

3

Con la Biblioteca de componentes de material puede usar el MaterialShapeDrawable.

Con un TextView:

    <TextView
        android:id="@+id/textview"
        ../>

Puede aplicar mediante programación un MaterialShapeDrawable:

float radius = getResources().getDimension(R.dimen.corner_radius);

TextView textView = findViewById(R.id.textview);
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
        .toBuilder()
        .setAllCorners(CornerFamily.ROUNDED,radius)
        .build();

MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);
ViewCompat.setBackground(textView,shapeDrawable);

ingrese la descripción de la imagen aquí

Si desea cambiar el color de fondo y el borde, simplemente aplique:

shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,R.color.....));
shapeDrawable.setStroke(2.0f, ContextCompat.getColor(this,R.color....));

0

Puede usar SVG para redondear esquinas y cargar en un ImageView y usar ConstraintLayout para traer ImageView en TextView

Lo usé para ImageView redondeado y TextView redondeado


0

Simplemente usando una imagen de esquina redondeada como fondo de esa vista lo hará así.

android:background="@drawable/my_custom_image"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.