Leanback UI ツールキットには、テレビ専用ライブラリがいくつか用意されています。 Android TV OS 用に開発されたアプリです。これらのライブラリには次のものが含まれます。
- Leanback ライブラリ: 次の UI テンプレートを提供します。 Android TV アプリを簡単に作成できます。
- Leanback の設定 ライブラリ: 環境と整合性の取れた設定画面を提供します。 アプリに合わせてテーマを設定できます。
- Leanback Paging ライブラリ:
ObjectAdapters
の AndroidX ページング モデル。 Leanback テンプレート - Leanback Tabs ライブラリ: タブ形式をサポート ナビゲーションを使えます。
Leanback ページング ライブラリ
Leanback UI ツールキット内のページングは AndroidX と同じように機能する
Paging 3 ライブラリがあり、
ページングの追加を
RecyclerView.Adapter
。
Leanback ページング ライブラリで公開されるアダプターは通常、
ObjectAdapter
そのため、ライブラリは ObjectAdapter
にページングのサポートを追加します。
アプリにページング アダプターを追加するには、まずプロジェクトにライブラリ依存関係を追加します。
implementation "androidx.leanback:leanback-paging:$version"
その後、
Paging 3 のドキュメント
androidx.leanback.paging.PagingDataAdapter
:
androidx.paging.PagingDataAdapter
。唯一の違いは
Presenter
を渡す
または
PresenterSelector
。
これは、ObjectAdapter
を通常使用するすべての場所(
ListRow
:
Kotlin
val adapter: PagingDataAdapter<MyItem> = PagingDataAdapter(myPresenter, object : DiffUtil.ItemCallback<MyItem>() { override fun areItemsTheSame( oldItem: MyItem, newItem: MyItem ): Boolean { return oldItem.id === newItem.id } override fun areContentsTheSame( oldItem: MyItem, newItem: MyItem ): Boolean { return oldItem == newItem } }) val header = HeaderItem(headerTitle) val row = ListRow(header, adapter)
Java
PagingDataAdapter<MyItem> adapter = new PagingDataAdapter(myPresenter, new DiffUtil.ItemCallback<MyItem>() { @Override public boolean areItemsTheSame(@NonNull MyItem oldItem, @NonNull MyItem newItem) { return oldItem.getId().equals(newItem.getId()); } @Override public boolean areContentsTheSame(@NonNull MyItem oldItem, @NonNull MyItem newItem) { return oldItem.equals(newItem); } }); HeaderItem header = new HeaderItem(headerTitle); Row row = new ListRow(header, adapter);
Leanback Tabs ライブラリ
Leanback UI ツールキットのテンプレートでは、 ブラウズ画面です。タブを横方向に 1 行追加するには: 代わりに Leanback タブを使用できます。
プロジェクトにライブラリ依存関係を追加します。
implementation "androidx.leanback:leanback-tab:$version"
次に、LeanbackTabLayout
と LeanbackViewPager
を使用してタブを実装します。
既存の
ViewPager ガイドをご覧ください。注:
LeanbackViewPager
は ViewPager2
ではなく ViewPager
に基づいています。
次に例を示します。
Kotlin
val leanbackTabLayout = findViewById<LeanbackTabLayout>(R.id.tab_layout) val leanbackViewPager = findViewById<LeanbackViewPager>(R.id.view_pager) leanbackViewPager.setAdapter(adapter) leanbackTabLayout.setupWithViewPager(leanbackViewPager)
Java
LeanbackTabLayout leanbackTabLayout = findViewById(R.id.tab_layout); LeanbackViewPager leanbackViewPager = findViewById(R.id.view_pager); leanbackViewPager.setAdapter(adapter); leanbackTabLayout.setupWithViewPager(leanbackViewPager);
制限事項
Leanback Tabs ライブラリでは、サポートされるテーマとフォーカス方法に制限があります 処理されます。
サポートされているテーマ
Theme.AppCompat
から派生したテーマのみがサポートされています。TabLayout
にはテーマ適用制約が含まれています。この制約により、子孫以外のテーマは許可されません
の Theme.AppCompat
が使用されなくなります。スペースにブリッジテーマを使用して、
Leanback UI ツールキット。
タブから上部へのフォーカス移動
レイアウトの高さが画面の高さより大きくて D-pad が押された場合
上ボタン、コントロールがフラグメント内にとどまらずタブに戻る
その上のアイテムに移動できます(図 1 を参照)。この問題に対処するため、
フォーカス検索をオーバーライドする必要があります。たとえば、
RowsSupportFragment
。
BrowseSupportFragment
オーバーライドされたフォーカス検索メソッドがあるため、タブ内では使用できません。
フォーカスがタブに戻れないようにします。