Wie erstelle ich in Android eine ListView mit abgerundeten Ecken?
android
android-layout
android-listview
Legende
quelle
quelle
Antworten:
Hier ist eine Möglichkeit (Dank der Android-Dokumentation!):
Fügen Sie Folgendes in eine Datei ein (z. B. customshape.xml) und platzieren Sie es in (res / drawable / customshape.xml).
Wenn Sie mit dem Erstellen dieser Datei fertig sind, stellen Sie den Hintergrund auf eine der folgenden Arten ein:
Durch Code:
listView.setBackgroundResource(R.drawable.customshape);
Fügen Sie über XML einfach das folgende Attribut zum Container hinzu (z. B. LinearLayout oder beliebige Felder):
Hoffe, jemand findet es nützlich ...
quelle
Obwohl das funktioniert hat, wurde auch die gesamte Hintergrundfarbe entfernt. Ich suchte nach einer Möglichkeit, nur den Rand zu erstellen und den XML-Layoutcode durch diesen zu ersetzen, und es konnte losgehen!
quelle
@ kris-van-bael
Wenn Sie Probleme mit der Auswahlmarkierung für die obere und untere Reihe haben, in der das Hintergrundrechteck bei der Auswahl angezeigt wird, müssen Sie den Selektor für Ihre Listenansicht auf transparente Farbe einstellen.
Fügen Sie in color.xml einfach Folgendes hinzu:
quelle
android:cacheColorHint="@android:color/transparent"
Die anderen Antworten sind dank der Autoren sehr nützlich!
Ich konnte jedoch nicht sehen, wie das Rechteck angepasst werden kann, wenn ein Element bei der Auswahl hervorgehoben wird, anstatt das Hervorheben von @alvins @bharat dojeha zu deaktivieren.
Das Folgende funktioniert für mich, um einen gerundeten Listenansicht-Elementcontainer ohne Umriss und mit einem helleren Grau zu erstellen, wenn dieselbe Form ausgewählt wird:
Ihre XML muss einen Selektor enthalten, wie z. B. (in res / drawable / customshape.xml):
Anschließend müssen Sie einen Listenadapter implementieren und die getView-Methode überschreiben, um den benutzerdefinierten Selektor als Hintergrund festzulegen
und müssen auch das Standard-Auswahlrechteck 'ausblenden', z. B. in onCreate (ich verstecke auch meine dünne graue Trennlinie zwischen den Elementen):
Dieser Ansatz löst eine allgemeine Lösung für Drawables, nicht nur für ListViewItem mit verschiedenen Auswahlzuständen.
quelle
Aktualisieren
Die Lösung besteht heutzutage darin, eine
CardView
mit Unterstützung für eingebaute abgerundete Ecken zu verwenden.Ursprüngliche Antwort *
Eine andere Möglichkeit, die ich gefunden habe, bestand darin, Ihr Layout auszublenden, indem Sie ein Bild über das Layout zeichnen. Es könnte dir helfen. Schauen Sie sich abgerundete Ecken von Android XML an
quelle
Eine weitere Lösung für die Auswahl zeigt Probleme mit dem ersten und dem letzten Element in der Liste auf:
Fügen Sie am oberen und unteren Rand Ihres Listenhintergrunds einen Abstand hinzu, der dem Radius entspricht oder größer ist. Dadurch wird sichergestellt, dass sich die Auswahlhervorhebung nicht mit Ihren Eckkurven überschneidet.
Dies ist die einfachste Lösung, wenn Sie eine nicht transparente Auswahlhervorhebung benötigen.
quelle
Eigentlich denke ich, dass die beste Lösung unter diesem Link beschrieben wird:
http://blog.synyx.de/2011/11/android-listview-with-rounded-corners/
Kurz gesagt, es wird ein anderer Hintergrund für die oberen, mittleren und unteren Elemente verwendet, sodass die oberen und unteren gerundet werden.
quelle
Das war unglaublich praktisch für mich. Ich möchte eine andere Problemumgehung vorschlagen, um die abgerundeten Ecken perfekt hervorzuheben, wenn Sie Ihre eigenen verwenden
CustomAdapter
.XML-Dateien definieren
Gehen Sie zunächst in Ihren Zeichenordner und erstellen Sie 4 verschiedene Formen:
shape_top
shape_normal
shape_bottom
shape_rounded
Erstellen Sie nun für jede Form ein anderes Zeilenlayout, dh für
shape_top
:Sie können dies auch tun, indem Sie den Hintergrund programmgesteuert ändern.
Und definieren Sie einen Selektor für jede geformte Liste, dh für
shape_top
:Ändern Sie Ihren CustomAdapter
Definieren Sie abschließend die Layoutoptionen in Ihrem
CustomAdapter
:Und das ist erledigt!
quelle
Um einen Rahmen zu erstellen, müssen Sie eine weitere XML-Datei mit der Eigenschaft Solid und Ecken im Zeichenordner erstellen und im Hintergrund aufrufen
quelle
Ich verwende eine benutzerdefinierte Ansicht, die ich über den anderen anordne und die nur die 4 kleinen Ecken in derselben Farbe wie der Hintergrund zeichnet. Dies funktioniert unabhängig vom Inhalt der Ansicht und weist nicht viel Speicher zu.
quelle