ContextCompat.GetColor no devuelve Color
Estoy intentando substituir Resources.GetColor con ContextCompat.GetColor pero el último no devuelve un color y no consigo lo que debo utilizar en vez de Resources.GetColor (que se convirtió en obsoleto de API 23). ¿Puede alguien ayudarme (ver más abajo lo que quiero lograr)?
Button.SetBackgroundColor(ContextCompat.GetColor(this, Resource.Color.LightRed));
Tenga en cuenta que uso Xamarin, pero si tiene respuesta en java puedo adaptarla fácilmente. ¡Gracias!
- Escribir plugins Unity3D multiplataforma con Xamarin
- Resource.designer.cs NO se está regenerando en Mono (Xamarin Studio)
- SqliteException ocupado iOS / Android Xamarin MVVMCross
- ¿Cómo obtener GoogleApiClient en Xamarin?
- Bluetooth Android / Xamarin transmisión de dispositivo en serie con outputtream vacío
- (Android Xamarin) Obtener valor de cadena de recursos en lugar de int
- Geolocalización, servicio y notificaciones locales
- Xamarin Android Player no puede ejecutar emuladores de API 21 o superior
- Xamarin-Android Mvvmcross - Tocar en la aplicación de inicio de notificación recibida con salpicaduras o llevar al frente
- OnResume Cámara Reinit Negro Pantalla
- Xamarin apk en Blackberry (> = 10.2.1)
- Cómo inflar una vista en expansión con una vista de relación de aspecto fija
- La forma correcta de hacer streaming RTMP multiplataforma / reproducir aplicaciones. Phonegap livu plugin?
ContextCompat sólo devuelve una representación entera de su color. Debe convertirlo en un color Android dividiendo sus partes RGB. Usa algo como esto
using Android.Graphics; public static Color GetColorFromInteger(int color) { return Color.Rgb(Color.GetRedComponent(color), Color.GetGreenComponent(color), Color.GetBlueComponent(color)); }
Y en su método
btn.SetBackgroundColor(GetColorFromInteger(ContextCompat.GetColor(this, Resource.Color.LightRed);
Tuve el mismo problema creo – y lo resolvió añadiendo la anotación @SuppressWarnings("ResourceAsColor")
en la parte superior del método.
La razón es que, en mi opinión, Lint no reconoce la nueva API en este momento, a pesar de que es válida. Ambos métodos devuelven un entero que representa un color resuelto. En mis pruebas Resources.GetColor () y ContextCompat.GetColor () devuelven el mismo valor. Sin embargo, al usar este último, obtengo un error en Android Studio diciendo:
Should pass resolved color instead of resource id here: `getResources().getColor(titleColor)`
… que no tiene sentido, porque estoy pasando un color resuelto. Es sólo un int , así que ¿cómo puedo estar equivocado … Así que en conclusión, creo que la supresión del error Lint es una forma válida de manejar la situación en este momento.
Si no está de acuerdo, por favor, levante su voz, estaría interesado.
- Cómo utilizar la barra de progreso indeterminada en appcompat-v7 r21 biblioteca?
- Android: getBluetoothService () llamado sin BluetoothManagerCallback