Gibt es eine Möglichkeit zu erstellen EditText
, die abgerundete Ecken hat?
280
Gibt es eine Möglichkeit zu erstellen EditText
, die abgerundete Ecken hat?
Es gibt einen einfacheren Weg als den von CommonsWare. Erstellen Sie einfach eine zeichnbare Ressource, die angibt, EditText
wie gezeichnet wird:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
Verweisen Sie dann einfach auf diese Zeichnung in Ihrem Layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip"
android:background="@drawable/rounded_edittext" />
</LinearLayout>
Sie erhalten so etwas wie:
Basierend auf Marks Kommentar möchte ich hinzufügen, wie Sie verschiedene Zustände für Ihre erstellen können EditText
:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_states.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/rounded_focused" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/rounded_focused" />
<item
android:state_enabled="true"
android:drawable="@drawable/rounded_edittext" />
</selector>
Dies sind die Staaten:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_focused.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<stroke android:width="2dp" android:color="#FF0000" />
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
Und ... jetzt sollte das EditText
so aussehen:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:background="@drawable/rounded_edittext_states"
android:padding="5dip"/>
</LinearLayout>
EditText
hat neben der Standardeinstellung verschiedene Hintergründe für fokussiert, deaktiviert, gedrückt und ausgewählt. Insbesondere die Fokussierung kann in Zukunft wichtig sein, wenn wir einige Android-Geräte ohne Touchscreen wie Google TV erhalten.android:radius
statt 4 Linien zu definierenHier ist die gleiche Lösung (mit zusätzlichem Bonuscode) in nur einer XML-Datei:
Sie setzen dann einfach das Hintergrundattribut auf die Datei edittext_rounded_corners.xml:
quelle
topRightRadius
undtopLeftRadius
alle vier Ecken abgerundet sind. Bitte helfen Sie. :(Probier diese,
1.Erstellen Sie die Datei round_edittext.xml in Ihrem Drawable
2.Wenden Sie den Hintergrund für Ihren EditText in der XML-Datei an
3. Sie erhalten eine Ausgabe wie diese
quelle
Danke für Norfeldts Antwort. Ich habe den Farbverlauf leicht geändert, um einen besseren inneren Schatteneffekt zu erzielen.
Sieht gut aus in einem hellen Hintergrundlayout.
quelle
Meiner Meinung nach hat es bereits abgerundete Ecken.
Wenn Sie möchten, dass sie runder sind, müssen Sie:
EditText
Hintergrund bilden (in Ihrem SDK enthalten).StateListDrawable
Ressource, die dieseEditText
Hintergründe zu einer einzigen kombiniertDrawable
, und ändern Sie sie so, dass sie auf Ihre abgerundeten PNG-Dateien mit neun Patches verweistStateListDrawable
als Hintergrund für IhrEditText
Widgetquelle
Wenn Sie möchten, dass nur die Ecke nicht das ganze Ende krümmt, verwenden Sie den folgenden Code.
Es werden nur die vier Winkel von gekrümmt
EditText
.quelle
Um die anderen Antworten zu ergänzen, stellte ich fest, dass die einfachste Lösung zum Erreichen der abgerundeten Ecken darin bestand, Folgendes als Hintergrund für Ihren Edittext festzulegen.
quelle
Mit der Materialkomponenten - Bibliothek können Sie mit der
MaterialShapeDrawable
auf individuelle Formen zu zeichnen .Mit einem können
EditText
Sie tun:Dann erstellen Sie ein
MaterialShapeDrawable
:Es erfordert die Version 1.1.0 der Bibliothek.
quelle