Abgerundete Ecke für Textansicht in Android

171

Ich habe eine Textansicht und möchte, dass die Ecke rund ist. Ich weiß bereits, dass es mit gemacht werden kann android:background="@drawable/somefile". In meinem Fall ist dieses Tag bereits enthalten und kann daher nicht mehr verwendet werden. zB android:background="@drawable/mydialogbox"ist schon da um bild im hintergrund zu erstellen

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

also wenn ich textview(textview_name)auch mit runder ecke will , wie das erreicht werden kann.

Sanjeev Yadav
quelle
4
Wenn Sie Ihre Antwort erhalten haben, akzeptieren Sie die Antwort, damit andere Hilfe von Ihrem Beitrag erhalten können
MilapTank

Antworten:

437

1) Erstellen Sie rounded_corner.xmlim drawableOrdner und fügen Sie den folgenden Inhalt hinzu:

<?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) Legen Sie dieses Zeichen in der TextViewHintergrundeigenschaft fest. Beispiel:

android:background="@drawable/rounded_corner"

Ich hoffe das ist nützlich für dich.

Dipali
quelle
16
Die Antwort ist richtig, nur dass der Typ, der sie gepostet hat, sie nicht im Detail erklärt hat. Sie müssen eine XML erstellen [z. round_view.xml] in Ihrem Zeichenordner mit dem obigen Code. Und in Ihrem Layout um Ihre Textansicht setzen Sie dies als Parameter android: background = "@ drawable / round_view"
Sharjeel Ahmed
4
android: background = "@ drawable / round_corner" benutze hier keine Erweiterung!
Boris Gafurov
4
Fügen android:shape="rectangle"Sie hinzu, wenn es für Sie nicht funktioniert hat
kristyna
Und
erstellen
18

Neben radiusgibt es einige Immobilien zu runde Ecke wie topRightRadius, topLeftRadius, bottomRightRadius,bottomLeftRadius

Beispiel TextViewmit redGrenze with corner andgray` Hintergrund

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>

Textübersicht

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

Ergebnis

Geben Sie hier die Bildbeschreibung ein

Phan Van Linh
quelle
16

Da in Ihrer Ansicht der obersten Ebene bereits die Eigenschaft android: background festgelegt ist, können Sie mit einem <layer-list>( Link ) ein neues XML-Zeichenelement erstellen, das sowohl Ihren alten Hintergrund als auch Ihren neuen Hintergrund mit abgerundeten Ecken kombiniert.

Jedes <item>Element in der Liste wird über das nächste gezeichnet, sodass das letzte Element in der Liste das oberste Element ist.

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

Erstellen Sie eine XML-Datei gradient.xml unter einem zeichnbaren Ordner

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

Fügen Sie dies dann Ihrer Textansicht hinzu

android:background="@drawable/gradient"
Sourav Roy
quelle
6
  1. Klicken Sie mit der rechten Maustaste auf Zeichnungsordner und erstellen Sie eine neue Datei
  2. Benennen Sie die Datei nach Ihren Wünschen und fügen Sie die Erweiterung als .xml hinzu .
  3. Fügen Sie der Datei den folgenden Code hinzu
  <?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. Fügen Sie die Linie hinzu, an der Sie die abgerundete Kante haben möchten android:background="@drawable/corner"
Ashishkumar Mouria
quelle
4

Sie können die bereitgestellte Rechteckform (ohne Farbverlauf, sofern Sie keinen möchten) wie folgt verwenden:

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

Dann in Ihrer Textansicht:

android:background="@drawable/rounded_rectangle"

Natürlich möchten Sie die Abmessungen und Farben anpassen.

Bisschen
quelle
4

Es gibt zwei Schritte

1) Erstellen Sie diese Datei in Ihrem Zeichenordner: - 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) Legen Sie diese Datei in Ihrer TextViewEigenschaft als Hintergrund fest.

android:background="@drawable/rounded_corner"

Sie können dieses Zeichen auch in Button oder Edittext verwenden

Sanjayrajsinh
quelle
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
quelle
2

Mit der Materialkomponentenbibliothek können Sie die MaterialShapeDrawable.

Mit einem TextView:

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

Sie können programmgesteuert Folgendes anwenden 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);

Geben Sie hier die Bildbeschreibung ein

Wenn Sie die Hintergrundfarbe und den Rand ändern möchten, wenden Sie einfach Folgendes an:

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

Sie können SVG zum Abrunden von Ecken und Laden in eine ImageView verwenden und ConstraintLayout verwenden, um ImageView in TextView zu bringen

Ich habe es für gerundete ImageView und gerundete TextView verwendet

Omid Farvid
quelle
0

Wenn Sie einfach ein Bild mit abgerundeten Ecken als Hintergrund für diese Ansicht verwenden, wird dies der Fall sein.

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