2009-12-09 4 views
33

Wenn ich eine ListView mit zwei verschiedenen Arten von Elementen, aktiviert und deaktiviert (dh auswählbar und nicht auswählbar), Android zieht einen kleinen Teiler korrekt zwischen den aktivierten Elementen, aber nicht zwischen deaktivierten Elementen. Stattdessen zeichnet es eine transparente Trennlinie, die wirklich schlechte Designprobleme verursacht. Dies wurde bereits diskutiert here (Google Groups), aber ohne eine Lösung.Android: ListView nicht aktivierte Elemente zeichnen unsichtbare Teiler

Was ich suchen, ist eine Möglichkeit, Android zu zwingen, den gleichen Teiler, der zwischen enabled Elemente verwendet wird, auch zwischen disabled Elemente zu verwenden statt nur einen transparenten Raum zu verlassen.

+0

Ich bin auch auf dieses Problem gestoßen und es macht mich traurig, dass das das erwartete Verhalten sein soll. Die einzige Lösung, die ich mir vorstellen kann, ist, die Teiler selbst zu zeichnen, indem Sie Ihren eigenen Adapter erstellen, der sie automatisch an die entsprechenden Stellen hinzufügt. –

+0

Ich habe mich schon eine Weile umgeschaut und auch keine passende Lösung gefunden. Wird diesen Beitrag aktualisieren, sobald ich einen finde. Für den Moment verwende ich auch den benutzerdefinierten Adapter als Workaround. – znq

+0

Ich stoße gerade auf das gleiche Problem in meiner App. Ein nicht auswählbares headerView zeigt nicht den Teiler (Kopfzeile mit dieser Methode hinzugefügt! AddHeaderView (View v, Objektdaten, boolean isSelectable). Ich werde es direkt in meine Kopfzeile einfügen ... –

Antwort

0

ja ist überhaupt nicht cool! Ich bin auf dasselbe Problem gestoßen. Um das Problem zu beheben, fügen Sie eine Zeile vom Typ "View" in Ihre XML-Datei ein und setzen Sie den Teiler wie folgt auf Höhe 0: android: dividerHeight = "0dp" Hinweis: Dies ist in der Listenansicht selbst.

1

Wenn Sie Header und/oder Fußzeilen haben, ist dies: http://java.dzone.com/articles/android-listview-%E2%80%93-fixing ist die richtige Antwort. Wirklich schön erklärt.

+0

Sein Ansatz funktioniert, aber es ist ein wenig problematisch. Wenn 'areAllItemsEnabled()' true zurückgibt, können Sie jedes Objekt in den Fokus bringen und darauf klicken, einschließlich Elemente, für die 'isEnabled' den Wert false zurückgibt. Versuchen Sie es mit den Pfeiltasten + geben Sie einen Emulator ein –

+0

wenn Sie den Inhalt deaktivieren/anklickbar selbst sollte es nicht zu der Liste durchklicken Die isEnabled-Funktion von listview kann nicht in angemessener Weise imho verwendet werden, da es viele Bugs/Inkompatibilitäten wie diese gibt – Denny1989

Verwandte Themen