Wie kann ich ein Layout mit abgerundeten Ecken erstellen? Ich möchte abgerundete Ecken auf meine LinearLayout
.
Antworten
Zu viele Anzeigen?<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<stroke android:width="3dip" android:color="#B1BCBE" />
<corners android:radius="10dip"/>
<padding android:left="3dip" android:top="3dip" android:right="3dip" android:bottom="3dip" />
</shape>
@David, setzen Sie einfach Padding auf den gleichen Wert wie Stroke, damit der Rand sichtbar ist, unabhängig von der Bildgröße.
Wenn Sie nur eine einfaches abgerundetes Rechteck um es kurz zu machen.
float r=8;
ShapeDrawable shape =
new ShapeDrawable (new RoundRectShape(new float[] { r, r, r, r, r, r, r, r },null,null));
shape.getPaint().setColor(Color.RED);
view.setBackground(shape);
- Die ersten beiden Floats sind für die linke obere Ecke (die restlichen Paare entsprechen dem Uhrzeigersinn).
für weitere Details lesen Sie diese Antwort
Ich bin zwar ein bisschen spät dran, aber das ist immer noch ein Problem. Also schrieb ich eine Reihe von OutlineProvider und BindingAdapter für Datenbindung, die Sie Ecken von Xml Clip ermöglicht.
HINWEIS: Beim Ausschneiden mit Umriss können die Ecken nicht unterschiedlich groß sein!
Ich habe eine ausführliche Antwort mit Code auf dieser Stackoverflow-Beitrag
Was Sie mit Code + Bindungsadapter erhalten:
<androidx.constraintlayout.widget.ConstraintLayout
clipRadius="@{@dimen/some_radius}"
clipBottomLeft="@{@dimen/some_radius}"
clipBottomRight="@{@dimen/some_radius}"
clipTopLeft="@{@dimen/some_radius}"
clipTopRight="@{@dimen/some_radius}"
clipCircle="@{@bool/clip}"
Damit können Sie die Ansicht auf einen Kreis beschränken, alle Ecken abrunden, Ecken in einer Richtung (links, oben, rechts, unten) oder einzelne Ecken abrunden.
Sie können dies mit einer benutzerdefinierten Ansicht wie der folgenden tun RoundAppBar y RoundBottomAppBar . Hier ein path
wird verwendet, um clipPath
die Leinwand.
- See previous answers
- Weitere Antworten anzeigen