Leanback.DetailsFragment 没有按预期滚动

Leanback.DetailsFragment not scrolling as expected

我有一个使用 DetailsOverviewRow 和 FullWidthDetailsOverviewRowPresenter 的详细信息片段。当页面首次加载时,将选择操作按钮。当我按下一次时,焦点离开按钮并且没有其他任何事情发生。当我第二次按下时,焦点移动到页面下方的 ListRow。我想弄清楚为什么概述部分或在演示者中称为正文部分没有重点。

两个屏幕截图之间不应该有第二个 'state' 可读 overview/body 吗?

可能值得注意。 DetailsFragment 未在活动 xml 中声明,我正在使用 FragmentTransactions 手动更改片段。此外,Fragment 是使用静态创建方法实例化的(来源如下)。

提前致谢。

Activity xml

DetailsFragment java

我没有特别尝试过这个例子,但是从我花在 Leanback 支持库上的时间中,我了解到尽管确实提供了很多有用的东西,但很多不是:D

所以我会尝试这些东西:

1) 确保您希望可见的区域中的某些内容是可聚焦的。 (默认情况下,可点击元素应该是可聚焦的,但最好也检查一下)我的意思是在屏幕截图上,该区域只有文本,没有按钮或可编辑的内容。因此,当您按下时,没有什么可聚焦的。如果让 body TextView 可聚焦会怎样? (是的,人们会期望支持库会处理这个问题,但事实可能并非如此。)

2) 找出当您按下时真正聚焦的是什么,因为正如您所说,焦点离开了按钮 -​​ 但它去了哪里? (How to find out which view is focused?) 你可能在某处有一个 "direction problem"。也就是说——焦点基于视图层次结构树移动,而不是基于我们在屏幕上看到的内容。在某些情况下,可能会跳过某些元素或通过将焦点移动到视图树的意外部分而卡在某处,这对算法来说是有意义的,但从人类的角度来看是不合逻辑的。

详细信息演示者焦点的工作方式如下: 1)首先关注的是动作按钮。 Right/left 导航键在操作按钮之间移动焦点 right/left。

2) 从操作行向下导航将焦点从操作行转移到详细信息行(个别详细信息项目本身不可聚焦),这是通过将缩略图锚定位置移到更南的位置来实现的。

3) 从详细信息行向下导航可将焦点从详细信息行转移到相关行。

因此,详情行通过更改缩略图的锚定位置获得焦点。从操作行按下时,您的缩略图是否改变了锚定位置?

讨厌回答我自己的问题。这是由于我未能使用 RTFM。我在网络请求完成后创建片段 UI。为了让 FullWidthDetailsPresenter 正常工作,它和 ClassPresenterSelector() 应该在片段的 onCreate() 方法中初始化。