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

时间:2016-11-23 09:12:42

标签: tabs android-tv

我想在屏幕顶部制作一个标签,如下所示:

enter image description here

我知道tabLayout和viewPager可以在手机上解决它。但是,如何在Android电视上做?

1 个答案:

答案 0 :(得分:5)

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

如果您使用leanback,我可以提供一个解决方案。您可以将BrowseFragment与自定义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/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_width="match_parent"
    android:layout_height="wrap_content"
    style="?attr/browseTitleViewStyle" />

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