我正在开发一个 Android TV 应用程序,但我对由VerticalGridFragment
,我想要它更小,颜色更暗一些。
我搜索了代码,但没有找到任何完整的工作解决方案。
在我的VerticalGridPresenter
子类,我可以重写的唯一方法是createShadowOverlayOptions
但我无法得到我想要的结果。
我想出的唯一解决方法是定义以下维度,以便覆盖支持库中声明的维度:
<dimen name="lb_material_shadow_details_z">3dp</dimen>
<dimen name="lb_material_shadow_focused_z">4dp</dimen>
<dimen name="lb_material_shadow_normal_z">3dp</dimen>
但这更多的是一种黑客行为,而不是一个正确的解决方案。
这是标准阴影:
这是我通过当前的 hack 得到的结果:
正如你所看到的,它更小,但我无法改变颜色。
有没有正确的方法来设置阴影颜色和尺寸VerticalGridFragment
and RowsFragment
课程?
我正在使用最新的 Leanback 版本:
compile 'com.android.support:leanback-v17:25.2.0'
My minSdkVersion
由于自定义的 Android TV 播放器,所以是 17,但从 21 开始就可以正常工作。
事实上,我之前曾向 Leanback 团队询问过这个问题,他们说定制组件的推荐方法是覆盖样式和尺寸。所以这可能有助于减轻您的一些担忧。
然而,我们还必须自定义视图上的阴影。我们通过创建我们自己的视图和我们自己的视图呈现器来做到这一点(而不是使用他们的ImageCardView
)。这样我们就可以在演示级别设置我们自己的阴影。
如果您查看文档ListRowPresenter https://developer.android.com/reference/android/support/v17/leanback/widget/ListRowPresenter.html文档说:
ListRowPresenter 将默认阴影应用于每个子视图。调用 setShadowEnabled(boolean) 禁用阴影。子类可以重写 isUsingDefaultShadow() 并返回 false,并用它自己的影子实现替换。
要了解更多关于它们如何处理阴影的信息,请查看源代码ListRowPresenter
并查看ShadowHelper
and ShadowHelperApi21
类来了解他们如何实现向列表项添加阴影。实际上,我们只是复制了这两个类,因为它们是包本地的。
您还可以覆盖ShadowOverlayHelper.Options createShadowOverlayOptions()
in ListRowPresenter
这使您能够更改角半径以及聚焦和未聚焦的 z 值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)