Ich möchte den gleichen Rand dieses LinearLayout wie im Beispiel erstellen:
In diesem Beispiel können wir sehen, dass der Rand rund um das lineare Layout nicht gleich ist. Wie kann ich dies mit einer XML-Zeichnungsdatei erstellen?
Im Moment kann ich nur einen einfachen Rahmen um das LinearLayout herum erstellen:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners
android:radius="1dp"
android:topRightRadius="0dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" />
<stroke
android:width="1dp"
android:color="#E3E3E1" />
<solid android:color="@color/blanc" />
</shape>
android
border
android-linearlayout
Wawanopoulos
quelle
quelle
background
Eigenschaft dafür verwenden ... erstellen Sie eine XML-Datei mit Form wie Rechteck, Farbe und Schatteneffekt und legen Sie sie als Hintergrund für Ihr lineares Layout fest.Antworten:
Versuche dies..
quelle
"0dp"
mit"1dp"
in Hariharan Antwort.<gradient>
in Ihrem verwenden können<shape>
, um den Randeffekt zu verbessern, und auch, wenn es wirklich der Effekt ist, den Ihre Benutzeroberfläche benötigt, anstatt nur einfarbigen Rand.Deshalb gibt es CardView. CardView | Android-Entwickler
Es ist nur ein FrameLayout, das das Erhöhen in Pre-Lollipop-Geräten unterstützt.
Um dies zu verwenden, müssen Sie Abhängigkeit hinzufügen zu
build.gradle
:quelle
Ich erhalte die besten Ergebnisse mit einer 9-Patch-Grafik.
Sie können einfach eine individuelle 9-Patch-Grafik mit dem folgenden Editor erstellen: http://inloop.github.io/shadow4android/
Beispiel:
Die 9-Patch-Grafik:
Das Ergebnis:
Die Quelle:
quelle
Okay, ich weiß, das ist viel zu spät. aber ich hatte die gleiche Anforderung. Ich habe so gelöst
1.Erstellen Sie zunächst eine XML-Datei (Beispiel: border_shadow.xml) im Ordner "drawable" und kopieren Sie den folgenden Code hinein.
2. Fügen Sie nun in dem Layout, in dem Sie den Schatten sehen möchten (Beispiel: LinearLayout), diesen in android: background hinzu
und das hat bei mir funktioniert.
quelle
Das ist so einfach:
Erstellen Sie eine zeichnbare Datei mit einem Verlauf wie folgt:
für Schatten unter einer Ansicht
below_shadow.xml
für Schatten über einer Ansicht
above_shadow.xml
und so weiter für rechten und linken Schatten ändern Sie einfach den Winkel des Verlaufs :)
quelle
Alternativ können Sie ein 9-Patch-Bild als Hintergrund für Ihr Layout verwenden, um "natürlichere" Schatten zu erzielen:
Ergebnis:
Legen Sie das Bild in Ihren
/res/drawable
Ordner.Stellen Sie sicher, dass die Dateierweiterung
.9.png
nicht lautet.png
Dies ist übrigens eine Änderung (reduziert auf die minimale quadratische Größe) einer vorhandenen Ressource, die im API 19 sdk-Ressourcenordner gefunden wird.
Ich habe die roten Markierungen verlassen, da sie nicht schädlich zu sein scheinen, wie im draw9patch-Tool gezeigt.
[BEARBEITEN]
Ungefähr 9 Patches, falls Sie nie etwas damit zu tun hatten.
Fügen Sie es einfach als Hintergrund Ihrer Ansicht hinzu.
Die schwarz markierten Bereiche (links und oben) werden gedehnt (vertikal, horizontal).
Die schwarz markierten Bereiche (rechts, unten) definieren den "Inhaltsbereich" (wo Sie Text oder Ansichten hinzufügen können - Sie können die nicht markierten Bereiche "Auffüllen" nennen, wenn Sie möchten).
Tutorial: http://radleymarx.com/blog/simple-guide-to-9-patch/
quelle
Sie erstellen eine XML-Datei in drawable mit dem Namen drop_shadow.xml:
Dann:
quelle
Verwenden Sie diese einzelne Zeile und hoffentlich erzielen Sie das beste Ergebnis.
Verwendung:
android:elevation="3dp"
Passen Sie die Größe so weit an, wie Sie möchten. Dies ist der beste und einfachste Weg, um Schatten wie Schaltflächen und andere Standard-Android-Schatten zu erzielen. Lassen Sie mich wissen, ob es funktioniert hat!quelle
Wenn Sie den Rand bereits von der Form haben, fügen Sie einfach die Höhe hinzu:
quelle
1.Erstellen Sie zunächst einen XML-Dateinamen shadow.xml im Ordner "drawable" und kopieren Sie den folgenden Code hinein.
Fügen Sie dann die Ebenenliste als Hintergrund in Ihr LinearLayout ein.
quelle
quelle
Ich weiß, dass es spät ist, aber es könnte jemandem helfen.
Sie können ein ConstraintLayout verwenden und die folgende Eigenschaft in die XML-Datei einfügen:
quelle
Ich habe den besten Weg gefunden, dies anzugehen.
Sie müssen einen festen rechteckigen Hintergrund für das Layout festlegen.
Verwenden Sie diesen Code -
ViewCompat.setElevation(view , value)
Auf dem übergeordneten Layoutsatz
android:clipToPadding="false"
quelle
ViewCompat.setElevation()
Methode in der ViewCompat-Klasse :public void setElevation(View view, float elevation) {}
. Wie Sie sehen können, ist es nicht implementiert. Ich bezweifle wirklich, dass es hilfreich sein wird, und frage mich wirklich, ob Sie tatsächlich Ihre eigene Antwort getestet haben, lol