Leanback.DetailsFragment不能按预期滚动

11

我有一个细节片段,使用了DetailsOverviewRow和FullWidthDetailsOverviewRowPresenter。当页面刚加载时,动作按钮被选中。当我按下一次后,焦点离开按钮,没有其他反应。当我第二次按下时,焦点移到了页面下面的ListRow。我正在试图弄清楚为什么概述部分或者叫做主体在Presenter中没有焦点。

DetailsView initial state

DetailsView scrolled

在这两个截图之间不应该有第二个'状态',使得概述/主体可读吗?

可能值得注意的是,DetailsFragment没有在activities xml中声明,我是使用FragmentTransactions手动更改片段的。此外,片段使用静态create方法进行实例化(源代码如下)。

提前感谢您!

Activity xml

DetailsFragment java

3个回答

2
详细信息呈现者的焦点工作方式如下: 1) 首先将焦点放在动作按钮上。右/左导航按键可在动作按钮之间向右/向左移动焦点。
2) 从动作行向下导航按键按下,将焦点从动作行转移到详细信息行(单个详细信息项目本身不能获得焦点),这是通过将缩略图定位点向南移动来实现的。
3) 从详细信息行向下导航按键按下,将焦点从详细信息行转移到相关行。
因此,通过改变缩略图图像的定位点,详细信息行获得了焦点。当从动作行向下按键时,您的缩略图图像是否改变其定位点?

2

我没有特别尝试过这个例子,但从我使用 Leanback 支持库的时间中了解到,虽然确实提供了很多有用的东西,但还有很多不足:D

所以我建议尝试以下几点:

1)确保您想要显示的区域中有可聚焦的内容。(可点击的元素默认应该是可聚焦的,但最好再检查一下)。我的意思是,在截图上,只有文本,没有按钮或可编辑的内容。因此,当您按下时,没有任何可以聚焦的内容。如果将正文 TextView 设为可聚焦呢? (是的,人们会期望支持库会处理这个问题,但情况可能并非如此。)

2)找出在按下时实际聚焦的内容,因为正如您所说,焦点离开了按钮——但去了哪里? (如何找出聚焦的视图?) 您可能遇到了“方向问题”。也就是说,焦点是根据视图层次结构树而不是根据我们在屏幕上看到的内容来移动的。在某些情况下,通过意料之外的视图树部分移动焦点可能会跳过某些元素或卡在某个位置,这对算法来说是有意义的,但从人的角度来看则不合逻辑。


感谢您的建议。在发布后,我发现了这篇文章,它涉及到了同样的问题。http://stackoverflow.com/questions/37718820/android-tv-losing-focus-in-details-fragment。虽然答案没有解决我的问题,但至少让我知道了应该发生什么事情。 - Redshirt

1

很不想回答自己的问题。这是因为我没有仔细阅读手册。我是在网络请求完成后创建片段UI的。为了使FullWidthDetailsPresenter正常工作,它和ClassPresenterSelector()应该在片段的onCreate()方法中初始化。


你能解释得更详细一些吗? - pavel

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