Canto arredondado para textview no android

171

Eu tenho uma visualização de texto e quero que seu canto seja redondo. Eu já sei que isso pode ser feito usando android:background="@drawable/somefile". No meu caso, essa tag já está incluída e, portanto, não pode ser usada novamente. por exemplo, android:background="@drawable/mydialogbox"já existe para criar imagem em segundo plano

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

então quando eu quero textview(textview_name)também com cantos arredondados, como isso pode ser alcançado.

Sanjeev Yadav
fonte
4
se você tem sua resposta do que aceitar a resposta assim que outro pode obter ajuda de sua contribuição
MilapTank

Respostas:

438

1) Crie rounded_corner.xmlna drawablepasta e adicione o seguinte conteúdo,

<?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) Defina este drawable na TextViewpropriedade background. Por exemplo:

android:background="@drawable/rounded_corner"

Espero que isso seja útil para você.

dipali
fonte
16
A resposta está correta, apenas que o cara que postou não a explicou em detalhes. Você precisa criar um xml [por exemplo. rounded_view.xml] na sua pasta drawable com o código acima. E no seu layout ao redor do seu textview, coloque isso como um parâmetro android: background = "@ drawable / rounded_view"
Sharjeel Ahmed
4
android: background = "@ drawable / rounded_corner" não use extension aqui!
Boris Gafurov
4
Adicionar android:shape="rectangle"se não funcionou para você
kristyna
E reconstruir o seu projeto se ele não funcionar automaticamente
adek111
18

Ao lado radius, há alguma propriedade para canto redondo como topRightRadius, topLeftRadius, bottomRightRadius,bottomLeftRadius

Exemplo TextViewcom fundo cinza da redbordawith corner and

bg_rounded.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>

TextView

<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

insira a descrição da imagem aqui

Phan Van Linh
fonte
16

Como a visualização de nível superior já possui o Android: conjunto de propriedades background, você pode usar um <layer-list>( link ) para criar um novo desenho XML que combina o seu background antigo e o novo fundo de cantos arredondados.

Cada <item>elemento da lista é desenhado ao longo do próximo, portanto, o último item da lista é o que acaba no topo.

<?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
fonte
6

crie um arquivo xml gradient.xml na pasta drawable

<?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>

adicione isso ao seu TextView

android:background="@drawable/gradient"
Sourav Roy
fonte
6
  1. Clique com o botão direito do mouse na pasta Drawable e crie um novo arquivo
  2. Nomeie o arquivo de acordo com você e adicione a extensão como .xml .
  3. Adicione o seguinte código no arquivo
  <?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. Adicione a linha onde deseja a aresta arredondada android:background="@drawable/corner"
Ashishkumar Mouria
fonte
4

Você pode usar a forma de retângulo fornecida (sem gradiente, a menos que deseje) da seguinte maneira:

Em 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>

Então, na sua exibição de texto:

android:background="@drawable/rounded_rectangle"

Obviamente, você desejará personalizar as dimensões e cores.

Tad
fonte
4

Há dois passos

1) Crie este arquivo na sua pasta drawable: - 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) Defina este arquivo em sua TextViewpropriedade como plano de fundo.

android:background="@drawable/rounded_corner"

Você também pode usar este desenho em Button ou Edittext

Sanjayrajsinh
fonte
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
fonte
3

Com a Biblioteca de componentes de material, você pode usar o MaterialShapeDrawable.

Com um TextView:

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

Você pode aplicar programaticamente um 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);

insira a descrição da imagem aqui

Se você deseja alterar a cor de fundo e a borda, basta aplicar:

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

Você pode usar o SVG para arredondar cantos e carregar em um ImageView e usar ConstraintLayout para trazer o ImageView no TextView

Usei-o para ImageView arredondado e TextView arredondado

Omid Farvid
fonte
0

Basta usar uma imagem de canto arredondado como plano de fundo dessa visualização.

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