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.


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


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


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>

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"

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"

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.


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


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

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....));

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


0

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

android:background="@drawable/my_custom_image"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.