Leanback
のほぼすべてのものと同様に、猫の皮膚を作る方法は複数あります。
ListRow
をカスタマイズして、ヘッダーにパディングを追加する必要がありました。 onBindRowViewHolder
をListRowPresenter
に上書きし、ヘッダーにはView
(View header = holder.getHeaderViewHolder().view;
経由)を取り込み、このレベルのカスタマイズを達成しました。そして、それを高さをheader.getLayoutParams().height = rowItem.getRowHeaderHeight();
に変更しました。
この同じ手法では、holder.view
(addView
)にフッタービューを動的に追加できます。
もう1つのアプローチは、RowPresenter
のドキュメントが推奨する内容に従います。関連の引用は次のとおりです。
RowPresenterのサブクラスはUIウィジェットを追加すると、それはRowPresenter.ViewHolderをサブクラス化しcreateRowViewHolder(のViewGroup)とinitializeRowViewHolder(ViewHolder)をオーバーライドする必要があります。サブクラスは、親フラグメントに存在するHeadersFragmentのタイトルにアライメントされるウィジェットに対してレイアウトID "row_content"を使用する必要があります。
この新しい推奨アプローチでは、基本的に独自のXMLを提供します。 ListRowPresenter
をサブクラス化することもできると信じています。コードの動作を確認するにはListRowView
を見てR.layout.lb_list_row
のxmlを膨らませることを確認してください。そしてそれはただR.id.row_content
のためのビューを使用します。
次に、それはholder.view
によって提供された実際のビューになります。次に、テキストを設定して必要な操作を行うことができます。
さらに詳しい説明が必要な場合はお知らせください。
私は余分なビューが既に追加されているかどうかを確認するためにチェックを追加しなければならなかったが、(何らかの理由でonCreateViewが最終としてマークされているため)ListRowPresenterを拡張してonBindViewHolderをオーバーライドした。 私は本当にそれを行うことができたらいいと思っています。確かに一度だけ行い、毎回チェックしませんが、これは問題ありません。 ヘッダーをカスタマイズするには、leanbackテーマを拡張し、いくつかの値をオーバーライドして、そのテーマをあなたのアクティビティに設定することでこれを行う方法があるかどうかを知っていますか? –