Wie bei fast allen Dingen mit Leanback
gibt es mehr als eine Möglichkeit, die Katze zu häuten.
Wir mussten die ListRow
anpassen, um mehr Füllung auf die Kopfzeile hinzuzufügen. Wir haben dieses Maß an Anpassung erreicht durch onBindRowViewHolder
von ListRowPresenter
überschreiben, die View
für den Header Grabbing (via View header = holder.getHeaderViewHolder().view;
). Und dann änderten wir die Höhe mit header.getLayoutParams().height = rowItem.getRowHeaderHeight();
.
Mit dieser Technik können Sie Ihre Fußzeilenansicht dynamisch zu holder.view
(mit addView
) hinzufügen.
Ein anderer Ansatz wäre das, was die Dokumentation für RowPresenter
empfiehlt. Das entsprechende Zitat ist:
Wenn eine Unterklasse von RowPresenter UI-Widgets fügt hinzu, es sollte RowPresenter.ViewHolder Unterklasse und überschreiben createRowViewHolder (Viewgroup) und initializeRowViewHolder (ViewHolder). Die Unterklasse muss die Layout-ID "row_content" für das Widget verwenden, das an den Titel eines HeadersFragments angeglichen wird, das im übergeordneten Fragment vorhanden sein kann.
Also mit diesem neuen empfohlenen Ansatz, werden Sie im Grunde liefern Ihre eigenen XML. Ich glaube, Sie können sogar Unterklasse ListRowPresenter
. Um zu sehen, wie der Code funktioniert, schauen Sie sich ListRowView
an, um zu sehen, dass er das xml für R.layout.lb_list_row
aufbläht. Und dann verwendet es nur die Ansicht für R.id.row_content
.
Dann wird das die tatsächliche Ansicht sein, die von holder.view
geliefert wird, und dann können Sie Text darauf setzen und tun, was auch immer Sie wollen.
Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.
Ich erweiterte schließlich ListRowPresenter und überschrieb den onBindViewHolder, obwohl ich eine Überprüfung hinzufügen musste, um zu sehen, ob meine zusätzlichen Ansichten bereits hinzugefügt wurden oder nicht (da aus irgendeinem Grund onCreateView als final markiert ist). Ich wünschte wirklich, ich könnte es onCreate tun, so ist es sicher nur einmal getan und nicht jedes Mal überprüft, aber ich denke, das ist in Ordnung. Wie zum Anpassen der Kopfzeile, wissen Sie, ob es eine Möglichkeit gibt, dies zu tun, indem Sie das Lehnen-Thema erweitern, einige Werte überschreiben und dieses Thema für Ihre Aktivität festlegen? –