Ich versuche eine gepunktete Linie zu machen. Ich verwende dies gerade für eine durchgezogene Linie:
LinearLayout divider = new LinearLayout( this );
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, 2 );
divider.setLayoutParams( params );
divider.setBackgroundColor( getResources().getColor( R.color.grey ) );
Ich brauche so etwas, aber gepunktet statt fest. Ich möchte vermeiden, dass Hunderte von Layouts zwischen einem transparenten und einem soliden Layout wechseln.
canvas.drawLine()
. Alternativ zum Deaktivieren der Hardwarebeschleunigung können Siecanvas.drawPath
stattdessen verwenden.dp
stattpx
.android:layerType="software"
muss in der ImageView eingestellt sein.Der Pfadeffekt wird auf das Malobjekt eingestellt
Sie können alle Arten von gepunkteten Mustern erstellen, indem Sie mehr Zahlen in das Array int [] eingeben, in dem die Verhältnisse von Strich und Lücke angegeben sind. Dies ist eine einfache, gleichermaßen gestrichelte Linie.
quelle
Gepunktete Linie mit XML erstellen.
Erstellen Sie XML in einem zeichnbaren Ordner und geben Sie den Hintergrund für das Element an, für das Sie einen gepunkteten Rand festlegen möchten.
XML-Hintergrund erstellen "dashed_border":
Hinzufügen dieses Hintergrunds zum Element:
quelle
<corners android:radius="5dp" />
Sie ihn einfach Ihrer Form hinzu. Siehe stackoverflow.com/a/41940609/1000551 für weitere InformationenXML erstellen (view_line_dotted.xml):
Als Hintergrund Ihrer Ansicht festlegen:
quelle
<item android:bottom="-1dp" android:left="-1dp" android:right="-1dp" >
, wenn Sie eine horizontale Linie 1dp Dicke wollen.android:layerType="software"
in eine Ansicht hinzufügen oder schreibenview.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
(siehe stackoverflow.com/questions/10843402/… ).Als ich eine gepunktete Linie zeichnen wollte, definierte ich eine zeichnbare dash_line.xml :
Und dann definieren Sie im Layout einfach eine Ansicht mit Hintergrund als dash_line . Hinweis für Android: layerType = "Software" , sonst funktioniert es nicht.
quelle
android:layerType="software"
ist das, wonach ich gesucht habe! Prost!Ich habe eine Strichlinie benutzerdefiniert, die horizontale und verikale Strichlinie unterstützt. Code unten:
quelle
Mit dieser Klasse können Sie den Effekt "gestrichelt und unterstrichen" auf Text mit mehreren Zeilen anwenden. Um DashPathEffect verwenden zu können, müssen Sie hardwareAccelerated Ihrer TextView deaktivieren (obwohl die DashPathEffect-Methode ein Problem mit Langtext hat). Mein Beispielprojekt finden Sie hier: https://github.com/jintoga/Dashed-Underlined-TextView/blob/master/Untitled.png .
Ergebnis:
quelle
Wenn Sie nach einer vertikalen Linie suchen, verwenden Sie diese Zeichenfunktion.
Die negativen Werte oben unten und links entfernen die unerwünschten Seiten der Form und hinterlassen eine einzelne gestrichelte Linie.
Verwenden Sie es in einer Ansicht wie dieser.
quelle
Ich habe das Folgende als Hintergrund für das Layout verwendet:
quelle
android:shape="rectangle"
statt Linie?Ich habe eine gestrichelte gepunktete Linie für EditText erstellt. Bitte schön. Erstellen Sie Ihre neue XML. zB dashed_border.xml Code hier:
Und verwenden Sie Ihre neue XML-Datei in Ihrem EditText zum Beispiel:
Prost! :) :)
quelle
Verwenden Sie ein ShapeDrawable anstelle eines LinearLayout und spielen Sie mit dashWidth und dashGap
http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
quelle
Beste Lösung für gepunkteten Hintergrund funktioniert perfekt
quelle
Legen Sie für einen gepunkteten Effekt auf einer Leinwand dieses Attribut auf das Malobjekt fest:
Ändern Sie den Wert 30 nach Ihren Wünschen: Er repräsentiert den "Abstand" zwischen den einzelnen Punkten.
quelle
Das einzige, was für mich funktioniert hat und ich denke, es ist der einfachste Weg, einen Pfad mit einem Malobjekt wie diesem zu verwenden:
Dann onDraw (): (Wichtiger Anruf wird zurückgesetzt, wenn Sie diese Punkte zwischen Ondraw-Aufrufen ändern, da Path alle Bewegungen speichert.)
quelle
Ich mochte die Lösung von Ruidge , aber ich brauchte mehr Kontrolle über XML. Also habe ich es in Kotlin geändert und Attribute hinzugefügt.
1) Kopieren Sie die Kotlin-Klasse:
2) Erstellen Sie eine attr- Datei im Verzeichnis / res und fügen Sie diese hinzu
3) In einen Stil der Stile - Datei
4) Jetzt können Sie den Standardstil verwenden
oder Attribute in XML festlegen
quelle
Keine dieser Antworten hat bei mir funktioniert. Die meisten dieser Antworten geben Ihnen einen halbtransparenten Rand. Um dies zu vermeiden, müssen Sie Ihren Behälter erneut mit einem anderen Behälter mit Ihrer bevorzugten Farbe umwickeln. Hier ist ein Beispiel:
So sieht es aus
dashed_border_layout.xml
dashed_border_in.xml
dashed_border_out.xml
quelle
Ich weiß nicht warum, aber die abgestimmten Antworten funktionieren bei mir nicht. Ich schreibe es so und funktioniert gut.
Definieren Sie eine benutzerdefinierte Ansicht:
Dann können Sie es in Ihrer XML verwenden:
quelle
Ich habe eine Bibliothek mit einer benutzerdefinierten Ansicht erstellt, um dieses Problem zu lösen, und sie sollte sehr einfach zu verwenden sein. Weitere Informationen finden Sie unter https://github.com/Comcast/DahDit . Sie können gestrichelte Linien wie folgt hinzufügen:
quelle
Ähnlich wie bei Tier777 gibt es hier eine Lösung für eine horizontale Linie:
Der Hinweis ist
<item android:top="-1dp">
.Um auf alten Geräten gestrichelte Linien anzuzeigen (<= API 21), sollten Sie eine Ansicht erstellen mit
android:layerType="software"
(siehe Android-gestrichelter potenzieller ICS-Fehler mit gestrichelten Linien ):Sie können dieselbe Ansicht auch ohne hinzufügen
android:layerType="software"
,layout-v23
um eine bessere Leistung zu erzielen. Ich bin jedoch nicht sicher, ob sie auf allen Geräten mit API 23 funktioniert.quelle