2012-04-10 13 views
0

Overlay Overlay Ich versuche, die unten aufgeführten Android ListView zu implementieren. Jedes gelbe Feld repräsentiert eine Zeile von ListView. Wenn Sie die Zeilen sehen, wird jede Zeile von der vorherigen und der nächsten Zeile überlappt. Ich habe Google durchsucht, konnte jedoch keine geeigneten Lösungen finden. Wenn jemand Hinweise hat, lass es mich wissen.Wie Zeilen von Android Listview

Vielen Dank im Voraus.

enter image description here

Antwort

3

Denken außerhalb der Box. Stellen Sie sich vor, diese Liste würde sich nicht überlappen, sondern nur diagonale Linien haben. In Ihrem Code des Teiler Höhe des Listview auf 0:

ListView listView = (ListView)findViewById(R.id.your_listview); 
listView.setDivider(null); 
listView.setDividerHeight(0); 

Dann zwei Drawables für die rows- eines für ungeradee Zeilen erstellen, eine andere für gerade Zeilen:

enter image description here und enter image description here

(Verwenden Sie diese beiden Bilder nicht, da sie nicht richtig/gleich groß sind, sondern die für Ihre spezifische Liste erstellen).

dann einen Adapter für Ihre Listenansicht erstellen - und in seiner getView Methode, stellen Sie den entsprechenden Hintergrund zu Ihrem Element:

@override 
public void getView(int position, View convertView, ViewGroup parent) { 
    MyView row; 

    if(convertView == null) { 
     row = (MyView)convertView; 
    } 
    else { 
     row = ... //create your view - inflate or create in code 
    } 

    row.setBackgroundResource(position%2==1 ? R.drawable.row_odd : R.drawable.row_even); 

    ... //populate the rest of the row with whatever you need 

    return row; 
} 

Und voila! Sie bekommen, was die Wirkung, die Sie brauchen (beachten Sie, auf diesem Schema die schwarzen Linien stellen die Grenzen zwischen den Reihen - diese für schematische Zwecke sind nur - in Ihrem Endergebnis Sie werden sie nicht haben):

enter image description here

Schließlich Beachten Sie bitte, dass Sie, wenn Sie bei der Auswahl eines Elements auf Ihre "Zeilen" markieren möchten, benutzerdefinierte Listener für die Statusänderung implementieren müssen, die den Hintergrund der ausgewählten Zelle sowie die darüber und darunter liegenden Zellen ändern um den richtigen visuellen Effekt zu erzielen.

+1

Wenn Sie wollen einfach nur Zeilen diagonal gehen (mit „Teiler“ alle die gleiche Art und Weise zeigt), dann können Sie diese viel einfacher erreichen: erstellen Sie einfach eine bild deiner teiler und stelle sie als teiler für deine listview im XML drawbar –

+0

Danke für deine Antworten .. ich dachte mir auch die Lösung aber für die aktuelle App könnten wir sie nicht benutzen, da der gelbe Bereich ein Bild ist und manchmal wird das Bild geändert. Um das zu implementieren, sollte ich die Zeilen überlagern. Gibt es hier jemanden, der die ListView-Zeilen überlagern könnte oder entscheiden könnte, ob das möglich ist oder nicht? Vielen Dank im Voraus .. :) – mooongcle

+0

@mooongcle Ich denke nicht, dass es nicht möglich ist, die Zeilen zu überlagern. Die Art und Weise, wie Android-Liste gezeichnet wird, ist jede Zeile wird an einer bestimmten Position gezeichnet, direkt unter der vorherigen Zeile. Sie können versuchen, mit dem Rand der Zeilenansicht (in getView des Adapters) zu spielen, indem Sie den oberen Rand auf einen negativen Wert setzen, aber ich bezweifle, dass es möglich ist. –

0

habe ich das gleiche Problem, aber ich schaffte es, eine Lösung

In der Listview in der XML finden Sie eine negative dividerHeight einstellen können, ist es für mich funktioniert.

<ListView 
... 
android:dividerHeight="-5dp" /> 

ich hoffe mir kann jemand helfen :)