Android 电视:VerticalGridFragment 阴影尺寸和颜色
Android TV: VerticalGridFragment shadow dimension and color
我正在开发 Android 电视应用程序,但我对 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
和 RowsFragment
类 的阴影颜色和尺寸是否有合适的设置方法?
我使用的是最新的 Leanback 版本:
compile 'com.android.support:leanback-v17:25.2.0'
我的 minSdkVersion
是 17,因为有一个自定义的 Android 电视播放器,但它从 21 开始运行没问题。
实际上我之前就此询问过 Leanback 团队,他们说自定义组件的推荐方法是覆盖样式和维度。所以这可能有助于减轻您的一些担忧。
但是,我们还必须自定义视图上的阴影。我们通过创建我们自己的视图和我们自己的视图呈现器(而不是使用它们的 ImageCardView
)来做到这一点。这样我们就可以在演示级别设置自己的阴影。
如果您查看 ListRowPresenter
的文档,文档会说:
ListRowPresenter applies a default shadow to each child view. Call setShadowEnabled(boolean) to disable shadows. A subclass may override and return false in isUsingDefaultShadow() and replace with its own shadow implementation.
要了解它们如何处理阴影的更多信息,请查看 ListRowPresenter
的源代码并查看 ShadowHelper
和 ShadowHelperApi21
类 以了解如何处理他们已经实现了在他们的列表项中添加阴影。我们实际上只是复制了这两个 类 因为它们是包本地的。
您还可以覆盖 ListRowPresenter
中的 ShadowOverlayHelper.Options createShadowOverlayOptions()
,这样您就可以更改角半径以及聚焦和未聚焦的 z 值。
我正在开发 Android 电视应用程序,但我对 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
和 RowsFragment
类 的阴影颜色和尺寸是否有合适的设置方法?
我使用的是最新的 Leanback 版本:
compile 'com.android.support:leanback-v17:25.2.0'
我的 minSdkVersion
是 17,因为有一个自定义的 Android 电视播放器,但它从 21 开始运行没问题。
实际上我之前就此询问过 Leanback 团队,他们说自定义组件的推荐方法是覆盖样式和维度。所以这可能有助于减轻您的一些担忧。
但是,我们还必须自定义视图上的阴影。我们通过创建我们自己的视图和我们自己的视图呈现器(而不是使用它们的 ImageCardView
)来做到这一点。这样我们就可以在演示级别设置自己的阴影。
如果您查看 ListRowPresenter
的文档,文档会说:
ListRowPresenter applies a default shadow to each child view. Call setShadowEnabled(boolean) to disable shadows. A subclass may override and return false in isUsingDefaultShadow() and replace with its own shadow implementation.
要了解它们如何处理阴影的更多信息,请查看 ListRowPresenter
的源代码并查看 ShadowHelper
和 ShadowHelperApi21
类 以了解如何处理他们已经实现了在他们的列表项中添加阴影。我们实际上只是复制了这两个 类 因为它们是包本地的。
您还可以覆盖 ListRowPresenter
中的 ShadowOverlayHelper.Options createShadowOverlayOptions()
,这样您就可以更改角半径以及聚焦和未聚焦的 z 值。