使用LeanBack支持库自定义Android TV界面

4
Android TV项目的leanback支持库似乎是标准化电视体验的良好尝试。然而,我认为它有点过于严格,除了像颜色方案等小的修改之外,限制了自定义。

我的问题是:在不重写leanback框架的关键部分的情况下,如何最好、最有效地定制DetailsFragment等屏幕?

背景信息

默认的详细信息屏幕如下所示:

我想做一些事情:

  1. 在DetailsOverViewRow下方添加一个或两个额外的视图(图片、标题/描述、操作按钮),显示与我们应用程序设计独特相关的额外信息(例如表情符号反应面板和电影制作者缩略图图像和名称文本视图)。
  2. 正确裁剪卡片缩略图图像以完全适合其图像视图。目前,该图像被剪切,不像在浏览器屏幕卡片视图中那样完全适合卡片视图。库的xml布局文件定义了一个相当小的容器大小(固定高度为274dp),这可能是图像未被正确裁剪的原因。

我尝试过的方法

扩展DetailsOverViewRowPresenter以便能够填充自定义的XML文件,该文件定义了附加视图。不幸的是,这个类隐藏了它的关键初始化方法createRowViewHolder->private initDetailsOverview(ViewHolder vh),所以我必须复制这样的隐藏但关键方法,这对我来说违背了子类化的目的。是否有比重新创建这样的代码更好的方法? 注意:这种方法可能类似于在此相关question中发布的一种方法,但OP没有进一步详细说明。

对于第一项,我复制了Android Leanback库提供的Presenter(AbstractDetailsDescriptionPresenter类),并编辑了其中的一些部分,包括XML。我使用了自己的类代替了Leanback官方提供的类。但是我仍然使用FullWidthDetailsOverviewRowPresenter,它看起来还是很相似的,我想。 - A. N
如果你已经解决了这个问题,能否分享一下你的解决方案? - khateeb
@khateeb,请看下面我的回答。 - kip2
1个回答

2
我最终没有实现详细屏幕。但是看起来更新的leanback库现在支持一定程度的自定义。在github上,google-samples leanback project是一个很好的起点。例如:VideoDetailsFragment子类化了DetailsFragment
此外,这个medium post中讨论的其他自定义可能性值得注意。

我已经查看了这个示例。它展示了如何修改概述Presenter内部。我还想知道如何修改其外部。你能回答我的这个问题吗:https://dev59.com/x6fja4cB1Zd3GeqPpQZ3 - khateeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接