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

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

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

最佳答案

您可以通过多种方式执行此操作-但我认为简短的答案就是无论您做什么,都必须自定义。到目前为止,leanback是Google提供的唯一用于电视特定组件的框架,该框架仅向您提供左侧的导航抽屉。

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

对于自定义视图,可以在每个选项卡上指定focusRight和focusLeft,并使用侦听器onClickBrowseFragment换出BrowseFragment中的片段。 This class in leanback显示如何交换PageRowFragmentFactory(特别是lb_browse_title.xml)中的片段。

我强烈建议您克隆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的布局。

将标题视图放在此@+id/browse_title_group文件中,并确保其ID为BrowseFragment。这是这样的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" />


然后创建一个扩展leanback-showcase的片段,它应该自动应用标题视图。有关如何启动和运行BrowseFragment的信息,请参考应用。

09-29 23:26