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.
- Reutilizando AndroidTV RowsFragment fuera de BrowseFragment
- Personaliza tu estilo ImageCardView (no el contenido)
- Errores de compilación de androidtv-Leanback-master
- Implementación de un cuadro de diálogo de archivo en Android TV Leanback
- Desplácese hasta la posición determinada en Android Leanback ListRow
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:
Este es el resultado que obtengo con mi hack actual:
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.
- Fusión del manifiesto de Gradle de Android falló
- Quitar SearchOrbView Android TV
- Agregar elementos en BrowseFragment Header en Android TV
- Cómo cambiar el color de fondo del área de información en un ImageCardView?
- Multiple ListRows para cada encabezado en BrowseFragment - Biblioteca de Leanback
- Android TV: El elemento de RowsFragment no funciona en pocos casos
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.