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.