El texto en un vista personalizada no cambia de color en el modo nocturno.
Utilizando:
com.google.android.material:material:1.4.0
Si tengo un archivo xml de diseño en un fragmento/actividad con un TextView:
Si cambio entre el modo claro/oscuro, el color del texto cambia adecuadamente.
Sin embargo, si creo una vista personalizada:
class MyView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0,
defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyle, defStyleRes) { … }
Y esa vista contiene el mismo TextView, el color del texto no cambia en el modo nocturno.
Inicializo la vista desde un fragmento:
new MyView(this.getActivity().getBaseContext());
También he intentado aplicar directamente el tema base:
new MyView(this.getActivity().getBaseContext(), null, R.id.AppTheme);
Además, por alguna razón extraña, puedo resolver este problema creando mis propios colores de texto en las carpetas apropiadas de luz/oscuridad, y eso recoge el cambio entre luz/oscuridad:
davy.ai
Para utilizar los Componentes de Material con la versión
1.4.0
en tu vista personalizada, debes aplicar el tema base a la vista. Puedes hacerlo pasandoR.id.AppTheme
como parámetrodefStyle
al crear la vista.Además, puedes crear tus propios colores de texto en las carpetas de luz/oscuridad apropiadas y establecer el atributo
android:textColor
al color personalizado.