Ich kann einen Rahmen für ein lineares Layout zeichnen, aber er wird von allen Seiten gezeichnet. Ich möchte es nur auf die rechte Seite beschränken, wie Sie es in CSS tun (Rand rechts: 1px durchgehend rot;).
Ich habe es versucht, aber es zieht immer noch nach allen Seiten:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<stroke
android:height="2dp"
android:width="2dp"
android:color="#FF0000" />
<solid android:color="#000000" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="1dp"
android:top="0dp" />
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="5dp"
android:radius="1dp"
android:topLeftRadius="5dp"
android:topRightRadius="0dp" />
</shape>
</item>
Irgendwelche Vorschläge, wie dies erreicht werden kann?
Übrigens möchte ich nicht den Hack verwenden, eine Ansicht mit einer Breite von 1 dp auf die erforderliche Seite zu setzen.
Antworten:
Sie können dies verwenden, um den Rand auf einer Seite zu erhalten
BEARBEITET
Da viele, einschließlich mir, einen einseitigen Rand mit transparentem Hintergrund haben wollten, habe ich einen implementiert
BorderDrawable
, der mir Ränder mit unterschiedlicher Größe und Farbe auf die gleiche Weise geben kann, wie wir CSS verwenden. Dies konnte jedoch nicht über XML verwendet werden. Zur Unterstützung von XML habe ich eine hinzugefügt,BorderFrameLayout
in die Ihr Layout eingeschlossen werden kann.Die vollständige Quelle finden Sie in meinem Github .
quelle
Einfach wie ein Kuchen und ermöglicht ein transparentes BG:
Ändern Sie den Winkel, um die Randposition zu ändern:
quelle
Es ist auch möglich, das, was Sie wollen, mit einer einzigen Ebene zu implementieren
auf diese Weise nur linke Rand ist sichtbar , aber Sie eine beliebige Kombination Sie mit durch das Spielen erreichen können
bottom
,left
,right
undtop
Attribute desitem
Elementsquelle
Um einen Rand auf nur einer Seite eines Zeichens zu erhalten, wenden Sie ein Negativ
inset
auf die anderen 3 Seiten an (wodurch diese Ränder außerhalb des Bildschirms gezeichnet werden).Dieser Ansatz ähnelt der Antwort von Naykah, jedoch ohne die Verwendung von a
layer-list
.quelle
insertX
oben, um zu entscheiden, welche Grenzen angezeigt werden sollen und welche nicht.Alternativ (wenn Sie keinen Hintergrund verwenden möchten) können Sie dies einfach tun, indem Sie eine Ansicht wie folgt erstellen:
Wenn Sie nur einen rechten Rand haben möchten, platzieren Sie diesen nach dem Layout (wo Sie den Rand haben möchten):
Wenn Sie nur einen linken Rand haben möchten, platzieren Sie diesen vor dem Layout (wo Sie den Rand haben möchten):
Hat für mich gearbeitet ... Ich hoffe, es hilft mir ...
quelle
Ich konnte den Effekt mit dem folgenden Code erzielen
Sie können Ihre Anforderungen an die Randposition anpassen, indem Sie die Verschiebungsrichtung ändern
quelle
quelle
Ein weiteres gutes Beispiel
quelle
Es gibt keine Erwähnung über neun-Patch - Dateien hier. Ja, Sie müssen die Datei erstellen, aber es ist ziemlich einfach und es ist wirklich eine Lösung, die " Cross-Version und Transparenz unterstützt ". Wenn die Datei in das
drawable-nodpi
Verzeichnis gestellt wird, funktioniert siepx
basierend unddrawable-mdpi
funktioniert ungefähr als dp-Basis (dank Resample).Beispieldatei für die ursprüngliche Frage ( Rand rechts: 1px durchgehend rot; ) ist hier:
http://ge.tt/517ZIFC2/v/3?c
Legen Sie es einfach in das
drawable-nodpi
Verzeichnis.quelle
Ränder in verschiedenen Farben. Ich habe 3 Artikel verwendet.
quelle