Leanback UI 工具包提供部分電視專用的程式庫 專為 Android TV OS 開發的應用程式。這些程式庫包含下列項目:
- Leanback 程式庫:提供 簡化建立 Android TV 應用程式的程序
- Leanback 偏好設定 程式庫:提供與瀏覽器版本 但您也可以配合應用程式主題來設計主題。
- Leanback Paging 程式庫:支援
ObjectAdapters
的 AndroidX 分頁模型,通常會與 Leanback 範本。 - Leanback 分頁程式庫:支援分頁式 Android TV 的導航功能
Leanback 分頁程式庫
Leanback UI 工具包中的分頁運作方式與 AndroidX 相同
Paging 3 程式庫,
簡化了將分頁新增至
RecyclerView.Adapter
。
使用 Leanback Paging 程式庫時,公開的轉接程式通常是
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 分頁媒體庫
Leanback UI 工具包範本可以在 瀏覽畫面。如何橫向新增一列分頁 可以改用 Leanback 分頁。
在專案中新增程式庫依附元件:
implementation "androidx.leanback:leanback-tab:$version"
然後使用 LeanbackTabLayout
和 LeanbackViewPager
實作分頁,方法是:
擷取的
ViewPager 指南。請注意,
LeanbackViewPager
採用ViewPager
(而非ViewPager2
) 計算後,
範例如下:
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 分頁庫在支援的主題和焦點方面有限制 物件移動處理即可。
支援的主題
系統僅支援衍生自 Theme.AppCompat
的主題。TabLayout
含有主題強制執行限制,可防止任何非上層主題
(共 Theme.AppCompat
個)。您也可以使用
Leanback UI 工具包。
焦點從分頁移至頂端
當版面配置高度大於螢幕高度時,按下 D-Pad
向上按鈕,控制項會移回分頁,而不會留在片段中
然後前往上方的項目 (如圖 1 所示)。為處理這個問題
片段中必須覆寫聚焦搜尋。舉例來說,請使用
RowsSupportFragment
。
BrowseSupportFragment
敬上
無法在分頁中使用,因為其中包含覆寫的焦點搜尋方法,
這樣就能避免焦點移回分頁。