Zaokrąglony róg dla widoku tekstu w systemie Android

171

Mam widok tekstu i chcę, aby jego róg był okrągły. Wiem już, że można to zrobić za pomocą android:background="@drawable/somefile". W moim przypadku ten tag jest już uwzględniony, więc nie można go użyć ponownie. np. android:background="@drawable/mydialogbox"jest już tam, aby utworzyć obraz w tle

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

więc kiedy chcę textview(textview_name)również z okrągłym rogiem, jak można to osiągnąć.

Sanjeev Yadav
źródło
4
jeśli masz odpowiedź, zaakceptuj odpowiedź, aby inni mogli uzyskać pomoc z twojego wkładu
MilapTank

Odpowiedzi:

438

1) Utwórz rounded_corner.xmlw drawablefolderze i dodaj następującą zawartość,

<?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) Ustaw to drawable we TextViewwłaściwości background. Na przykład:

android:background="@drawable/rounded_corner"

Mam nadzieję, że to Ci się przyda.

dipali
źródło
16
Odpowiedź jest prawidłowa, tylko że facet, który opublikował, nie wyjaśnił tego szczegółowo. Musisz stworzyć xml [np. rounded_view.xml] w folderze do rysowania z powyższym kodem. W swoim układzie otaczającym Textview umieść to jako parametr android: background = "@ drawable / rounded_view"
Sharjeel Ahmed,
4
android: background = "@ drawable / rounded_corner" nie używaj tutaj rozszerzenia!
Boris Gafurov
4
Dodaj, android:shape="rectangle"jeśli to nie zadziałało
kristyna
I
odbuduj
18

Obok radius, istnieją pewne nieruchomość do okrągłego narożnika jak topRightRadius, topLeftRadius, bottomRightRadius,bottomLeftRadius

Przykład TextViewz redgranicy with corner andgray` tle

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>

Widok tekstu

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

Wynik

wprowadź opis obrazu tutaj

Phan Van Linh
źródło
16

Ponieważ widok najwyższego poziomu ma już ustawioną właściwość android: background, możesz użyć <layer-list>( łącza ), aby utworzyć nowy plik XML do rysowania, który łączy zarówno stare tło, jak i nowe tło z zaokrąglonymi rogami.

Każdy <item>element na liście jest rysowany na następnym, więc ostatnia pozycja na liście to ta, która kończy się na górze.

<?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>
preoccu panda
źródło
6

utwórz plik xml gradient.xml w folderze do rysowania

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

następnie dodaj to do swojego TextView

android:background="@drawable/gradient"
Sourav Roy
źródło
6
  1. Kliknij prawym przyciskiem myszy folder do rysowania i utwórz nowy plik
  2. Nazwij plik według własnego uznania i dodaj rozszerzenie jako .xml .
  3. Dodaj następujący kod w pliku
  <?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. Dodaj linię, w której chcesz zaokrągloną krawędź android:background="@drawable/corner"
Ashishkumar Mouria
źródło
4

Możesz użyć dostarczonego kształtu prostokąta (bez gradientu, chyba że chcesz) w następujący sposób:

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

Następnie w widoku tekstu:

android:background="@drawable/rounded_rectangle"

Oczywiście będziesz chciał dostosować wymiary i kolory.

Berbeć
źródło
4

Są dwa kroki

1) Utwórz ten plik w swoim folderze do rysowania: - 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) Ustaw ten plik TextViewjako właściwość jako tło.

android:background="@drawable/rounded_corner"

Możesz również użyć tego do rysowania w Button lub Edittext

Sanjayrajsinh
źródło
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
źródło
2

Z Biblioteką komponentów materiałów można używać MaterialShapeDrawable.

Z TextView:

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

Możesz programowo zastosować 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);

wprowadź opis obrazu tutaj

Jeśli chcesz zmienić kolor tła i obramowanie, po prostu zastosuj:

shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,R.color.....));
shapeDrawable.setStroke(2.0f, ContextCompat.getColor(this,R.color....));
Gabriele Mariotti
źródło
0

Możesz użyć SVG do zaokrąglania rogów i załadowania do ImageView i użyj ConstraintLayout, aby przenieść ImageView na TextView

Użyłem go do zaokrąglonego ImageView i zaokrąglonego TextView

Omid Farvid
źródło
0

Wystarczy użyć zaokrąglonego narożnika obrazu jako tła tego widoku, aby tak było.

android:background="@drawable/my_custom_image"
Biplob Das
źródło