Wie kann ich ein Layout mit abgerundeten Ecken erstellen? Ich möchte abgerundete Ecken auf meine LinearLayout
.
Antworten
Zu viele Anzeigen?1: Definieren layout_bg.xml in Auslosungen:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<stroke android:width="3dp" android:color="#B1BCBE" />
<corners android:radius="10dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>
2: Hinzufügen layout_bg.xml
als Hintergrund für Ihr Layout
android:background="@drawable/layout_bg"
Für API 21+, Clip-Ansichten verwenden
Abgerundeter Umrissbeschnitt wurde der View
Klasse in API 21. Siehe dies Schulungsdoku oder dies Referenz für weitere Informationen.
Dank dieser eingebauten Funktion lassen sich abgerundete Ecken sehr einfach umsetzen. Sie funktioniert in jeder Ansicht und in jedem Layout und unterstützt den richtigen Ausschnitt.
Hier ist zu tun:
- Erstellen Sie ein Drawable mit einer runden Form und legen Sie es als Hintergrund für Ihre Ansicht fest:
android:background="@drawable/round_outline"
- Clip zur Gliederung im Code:
setClipToOutline(true)
In der Dokumentation hieß es früher, dass man die android:clipToOutline="true"
die XML, sondern dieser Fehler ist nun endlich gelöst, und in der Dokumentation steht nun korrekt, dass man dies nur im Code tun kann.
Wie es aussieht:
Besonderer Hinweis zu ImageViews
setClipToOutline()
funktioniert nur, wenn der Hintergrund der Ansicht auf eine zeichenbare Form eingestellt ist. Wenn diese Hintergrundform vorhanden ist, behandelt die Ansicht die Umrisse des Hintergrunds als die Grenzen für Clipping- und Schattenzwecke.
Das bedeutet, dass Sie, wenn Sie die Ecken einer ImageView abrunden wollen, mit setClipToOutline()
Ihr Bild muss von android:src
anstelle von android:background
(da der Hintergrund für die abgerundete Form verwendet wird). Wenn Sie Hintergrund verwenden MÜSSEN, um Ihr Bild anstelle von src zu setzen, können Sie diese verschachtelte Ansichten Workaround verwenden:
- Erstellen Sie ein äußeres Layout, dessen Hintergrund auf die Zeichenfläche Ihrer Form eingestellt ist
- Wickeln Sie dieses Layout um Ihre ImageView (ohne Padding)
- Die ImageView (einschließlich aller anderen Elemente im Layout) wird nun auf die runde Form des äußeren Layouts zugeschnitten.
Hier ist eine Kopie einer XML-Datei zum Erstellen einer Zeichenfläche mit weißem Hintergrund, schwarzem Rand und abgerundeten Ecken:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffffff"/>
<stroke android:width="3dp"
android:color="#ff000000"
/>
<padding android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp"
/>
<corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp" android:topRightRadius="7dp"/>
</shape>
Speichern Sie es als Xml-Datei im Verzeichnis "drawable", Verwenden Sie sie wie jeden anderen zeichenbaren Hintergrund (Symbol oder Ressourcendatei) unter Verwendung ihres Ressourcennamens (R.drawable.your_xml_name)
Verwenden Sie CardView in der Android v7 Support-Bibliothek. Obwohl es ein bisschen schwer ist, löst es alle Probleme, und einfach genug. Nicht wie die Methode set drawable Hintergrund, könnte es Clip Unteransichten erfolgreich.
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardBackgroundColor="@android:color/transparent"
card_view:cardCornerRadius="5dp"
card_view:cardElevation="0dp"
card_view:contentPadding="0dp">
<YOUR_LINEARLAYOUT_HERE>
</android.support.v7.widget.CardView>
Ich habe das so gemacht:
Screenshot prüfen:
erstellen. auslosbar Datei, die mit custom_rectangle.xml
en auslosbar Ordner:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@android:color/white" />
<corners android:radius="10dip" />
<stroke
android:width="1dp"
android:color="@android:color/white" />
</shape>
Jetzt bewerben Rechteckiger Hintergrund auf Siehe :
mView.setBackground(R.drawlable.custom_rectangle);
Erledigt
- See previous answers
- Weitere Antworten anzeigen