Android TV: VerticalGridFragment sombra dimensión y color

Estoy trabajando en una aplicación de Android TV, pero no estoy muy contento con la sombra estándar prestada por VerticalGridFragment , me gustaría tenerlo más pequeño y un poco menos oscuro.

He buscado el código pero no encontré ninguna solución de trabajo completa. En mi subclase VerticalGridPresenter , el único método que puedo reemplazar es createShadowOverlayOptions pero no puedo obtener el resultado que quiero.

La única solución que se me ocurrió es definir las siguientes dimensiones, de modo que las declaradas en la biblioteca de soporte sean sobreescritas:

 <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> 

Pero es más un hack en lugar de una solución adecuada.

Esta es la sombra estándar:

Sombra estándar

Este es el resultado que obtengo con mi hack actual:

Introduzca aquí la descripción de la imagen

Como puedes ver, es más pequeño pero no puedo cambiar el color.

¿Existe una forma adecuada de configurar el color y la dimensión de las RowsFragment clases VerticalGridFragment y RowsFragment ?

Estoy usando la última versión de Leanback:

 compile 'com.android.support:leanback-v17:25.2.0' 

Mi minSdkVersion es 17 debido a un reproductor de Android Android personalizado, pero está bien tenerlo a partir de 21.

Realmente he pedido al equipo de Leanback sobre esto antes y dijeron que la forma recomendada de personalizar sus componentes es a través de la superación de los estilos y dimensiones. Así que eso podría ayudar a calmar algunas de sus preocupaciones.

Sin embargo, también tuvimos que personalizar las sombras en nuestras vistas. Hicimos esto creando nuestras propias opiniones y nuestros propios presentadores de la opinión (en vez de utilizar su ImageCardView ). Con eso pudimos establecer nuestras propias sombras en el nivel de presentación.

Si miras la documentación de ListRowPresenter los documentos dicen:

ListRowPresenter aplica una sombra predeterminada a cada vista secundaria. Llame a setShadowEnabled (booleano) para desactivar las sombras. Una subclase puede anular y devolver false en isUsingDefaultShadow () y reemplazar con su propia implementación de sombra.

Para ver más de cómo manejan las sombras, por favor, mirar en el código fuente de ListRowPresenter y también echa un vistazo a las clases ShadowHelper y ShadowHelperApi21 para ver cómo han implementado la adición de sombras a sus elementos de la lista. De hecho, sólo copiamos sobre esas dos clases, ya que son paquete local.

También puede anular ShadowOverlayHelper.Options createShadowOverlayOptions() en ListRowPresenter que le da cierta capacidad para cambiar el radio de la esquina y z enfocado y desfocado.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.