Android TV如何在屏幕顶部制作一个标签?

Posted

技术标签:

【中文标题】Android TV如何在屏幕顶部制作一个标签?【英文标题】:Android TV how to make a tab on the top of screen? 【发布时间】:2017-04-07 05:00:44 【问题描述】:

我想像这样在屏幕顶部制作一个标签:

我知道tabLayout和viewPager可以在手机上解决。但是,在安卓电视上怎么办?

【问题讨论】:

【参考方案1】:

有几种方法可以做到这一点 - 但我认为简短的回答是无论你做什么,它都必须是定制的。到目前为止,leanback 是 Google 为任何电视特定组件提供的唯一框架,并且该框架只为您提供左侧导航抽屉。

如果您使用的是leanback,我可以提供一种解决方案。您可以将BrowseFragment 与自定义TitleView 一起使用,该TitleView 具有选项卡并跟踪其中选项卡的焦点。只要您的自定义视图实现了TitleViewAdapter.Provider,那么您就可以将它与BrowseFragment 一起用作TitleView。这样做的好处是您可以让它自动从顶部进出动画,而无需额外的工作。

对于自定义视图,您可以在每个选项卡上指定 focusRight 和 focusLeft,并有一个侦听器onFocusonClick 来交换BrowseFragment 中的片段。 This class in leanback 展示了如何在BrowseFragment(特别是PageRowFragmentFactory)中交换片段。

我强烈建议您克隆 android 团队整合的 leanback showcase app 并在其中进行尝试。

关于自定义 TitleView 的具体细节,如下所示:


创建您的自定义视图

class YourTitleView extends RelativeLayout implements TitleViewAdapter.Provider 
    ... do custom view setup/logic here ...

创建一个名为 lb_browse_title.xml 的 XML 文件。这会覆盖他们用于创建 TitleView 的leanback 布局。

将您的标题视图放入此 lb_browse_title.xml 文件并确保其 ID 为 @+id/browse_title_group。这让leanback 知道要抓住你的标题视图。

<com.your.android.app.views.YourTitleView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/browse_title_group"
    android:layout_
    android:layout_
    style="?attr/browseTitleViewStyle" />

然后创建一个扩展BrowseFragment 的片段,它应该会自动应用您的标题视图。请参阅leanback-showcase 应用了解如何启动并运行BrowseFragment

【讨论】:

以上是关于Android TV如何在屏幕顶部制作一个标签?的主要内容,如果未能解决你的问题,请参考以下文章

ios中的标签栏位于屏幕顶部

ViewPager 之类的东西在 Android TV 的浏览器片段中

Android TV 后退

如何在 Android 中制作工具栏(如辅助操作栏)?

如何使用 Leanback 库在 Android TV 中创建顶部导航栏

Android TV:如何通知 Card Presenter 项目更改