Cómo cambiar programáticamente el color primario en Android L
¿Hay una manera de cambiar programáticamente los colores primarios. Me gustaría hacerlo en código dependiendo de la pantalla / estado de la aplicación.
Actualmente sólo puedo establecer los colores en el tema (estático):
- Cómo implementar hojas inferiores persistentes de Documentos de diseño de materiales
- Por qué el diseño de material de Google dice: "El material nunca se dobla ni se pliega".
- ¿Es válida la guía de diseño de iconografía Android para Android 5 / Diseño de material
- Para bibliotecas de soporte de materiales de Android, ¿dónde puedo encontrar CardView y RecyclerView?
- AppCompat ShareActionProvider icono es demasiado grande en comparación con otros iconos
<item name="android:colorPrimary">@color/primary_color</item> <item name="android:colorPrimaryDark">@color/dark_color</item> <item name="android:colorBackground">@android:color/white</item> <item name="android:colorAccent">@color/primary_color</item> <item name="android:colorControlHighlight">@color/primary_color</item>
Gracias
- Las transiciones de entrada de actividad de Android no funcionarán según lo previsto en vistas superpuestas
- ¿Por qué `text_size_body` tiene un tamaño diferente en la librería AppCompat y Android Lollipop?
- Nuevo tema.AppCompat ActionBar altura
- Material de diseño progressdialog
- Androide: Elevación no respetada a través de FragmentTransactions
- Eliminar espacio entre los elementos de RecyclerView android
- ¿Cómo puedo conseguir el selector de marcación rápida android fab?
- Android RecyclerView con CardView - mostrar tarjetas en una pila-como (no una lista)
Por supuesto, puede implementar subclases personalizadas de View que tienen métodos para configurar colores.
También puede definir varios temas con varios esquemas de color.
Las vistas buscan información del tema desde el contexto cuando se crean. Así que para cambiar los estilos aplicados desde un tema tendrá que recrear la jerarquía de vista con un contexto que utiliza el tema correcto.
Una forma de hacerlo, es crear un nuevo ContextThemeWrapper y luego obtener un LayoutInflator que utiliza ese envoltorio de temas, quitar la versión antigua de su diseño y volver a inflar su diseño.
Aproximadamente:
ContextThemeWrapper themeWrapper = new ContextThemeWrapper(this, R.style.AppThemeWithColorScheme2); LayoutInflater layoutInflater = LayoutInflater.from(themeWrapper); viewContainer.removeAllViews(); layoutInflater.inflate(R.layout.my_layout, viewContainer, true );
Si está utilizando la barra de acción, que puede ser un poco más complicado, porque la barra de acción se crea una vez por actividad .
Utilice este código para configurar la barra de herramientas y la barra de estado (color más oscuro de la barra de herramientas)
toolbar.setBackgroundColor(toolbarColor); factor=0.8f; int a = Color.alpha(toolbarcolor); int r = Math.round(Color.red(toolbarcolor) * factor); int g = Math.round(Color.green(toolbarcolor) * factor); int b = Math.round(Color.blue(toolbarcolor) * factor); int statusColor=Color.argb(a, Math.min(r, 255), Math.min(g, 255), Math.min(b, 255)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = MainActivity.this.getWindow(); window.setStatusBarColor(statusColor); }
- CoordinatorLayout con RecyclerView y EditText
- Depuración de "Android Studio": muestra variables como hexadecimal