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.

Sanjeev Yadav
fuente
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.

dipali
fuente
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í

Phan Van Linh
fuente
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>
Panda Preoccu
fuente
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"
Sourav Roy
fuente
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"
Ashishkumar Mouria
fuente
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.

Tad
fuente
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

Sanjayrajsinh
fuente
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>
goonerDroid
fuente
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....));
Gabriele Mariotti
fuente
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

Omid Farvid
fuente
0

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

android:background="@drawable/my_custom_image"
Biplob Das
fuente