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.


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.


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


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>

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"

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"

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.


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


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>

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

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


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"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.