Colores en Xamarin.Forms

Ejemplo de descarga Descarga del ejemplo

La estructura permite especificar colores como valores Color rojo-verde-azul (RGB), valores Hue-Saturation-Luminosity (HSL), valores Hue-Saturation-Value (HSV) o con un nombre de color. También hay disponible un canal alfa para indicar la transparencia.

ColorLos objetos se pueden crear con los constructores, que se pueden usar para especificar un tipo de vínculo de datos Xamarin_Forms ColorColor _Color__ctor_System_Double_" data-linktype="absolute-path">gray shade , un sombreado gris de Xamarin_Forms Color _Color__ctor_System_Double_System_Double_System_Double_" data-linktype="absolute-path">RGB value o un valor RGB de Xamarin_Forms _Color__ctor_System_Double_System_Double_System_Double_System_Double_" data-linktype="absolute-path">RGB con transparencia . En todos los casos, los argumentos double son valores que van de 0 a 1.

También puede usar métodos estáticos para crear Color objetos:

Una vez creado, Color un objeto es inmutable. Las características del color se pueden obtener a partir de las siguientes propiedades:

Estas propiedades son todos double valores que van de 0 a 1.

Colores con nombre

La Color estructura también define 240 campos públicos estáticos de solo lectura para colores comunes, como AliceBlue .

Color.Accent

El valor Xamarin_Forms _Color_Accent" data-linktype="absolute-path">da como resultado un color específico de la plataforma (y a veces seleccionable por el usuario) que es visible en un fondo oscuro o Color.Accent claro.

Color.Default

El valor Xamarin_Forms _Color_Default" data-linktype="absolute-path">define un con todos los canales establecidos en Color.Default -1 y está diseñado para aplicar la combinación de colores de la Color plataforma. Por lo tanto, tiene un significado diferente en contextos diferentes en distintas plataformas. De forma predeterminada, las combinaciones de colores de la plataforma son:

  • iOS: texto oscuro sobre un fondo claro.
  • Android: texto oscuro sobre un fondo claro.
  • Windows: texto oscuro sobre un fondo claro.

Color.Transparent

El Color.Transparent valor define un con todos los Color canales establecidos en cero.

Modificación de un color

Varios métodos de instancia permiten modificar un color existente para crear un nuevo color:

Conversiones implícitas

Se puede realizar la Xamarin.Forms.Color conversión implícita entre los tipos y System.Drawing.Color :

Xamarin.Forms.Color xfColor = Xamarin.Forms.Color.FromRgb(0, 72, 255);
System.Drawing.Color sdColor = System.Drawing.Color.FromArgb(38, 127, 0);

// Implicity convert from a Xamarin.Forms.Color to a System.Drawing.Color
System.Drawing.Color sdColor2 = xfColor;

// Implicitly convert from a System.Drawing.Color to a Xamarin.Forms.Color
Xamarin.Forms.Color xfColor2 = sdColor;

Ejemplos

En XAML, normalmente se hace referencia a los colores mediante sus valores con nombre o con sus representaciones hexadecimales:

<Label Text="Sea color"
       TextColor="Aqua" />
<Label Text="RGB"
       TextColor="#00FF00" />
<Label Text="Alpha plus RGB"
       TextColor="#CC00FF00" />
<Label Text="Tiny RGB"
       TextColor="#0F0" />
<Label Text="Tiny Alpha plus RGB"
       TextColor="#C0F0" />

Nota:

Al usar la compilación XAML, los nombres de color no tienen en cuenta las mayúsculas y minúsculas y, por tanto, se pueden escribir en minúsculas. Para obtener más información acerca de la compilación XAML, consulte XAML Compilation (Compilación XAML).

En C#, normalmente se hace referencia a los colores mediante sus valores con nombre o con sus métodos estáticos:

Label red    = new Label { Text = "Red",    TextColor = Color.Red };
Label orange = new Label { Text = "Orange", TextColor = Color.FromHex("FF6A00") };
Label yellow = new Label { Text = "Yellow", TextColor = Color.FromHsla(0.167, 1.0, 0.5, 1.0) };
Label green  = new Label { Text = "Green",  TextColor = Color.FromRgb (38, 127, 0) };
Label blue   = new Label { Text = "Blue",   TextColor = Color.FromRgba(0, 38, 255, 255) };
Label indigo = new Label { Text = "Indigo", TextColor = Color.FromRgb (0, 72, 255) };
Label violet = new Label { Text = "Violet", TextColor = Color.FromHsla(0.82, 1, 0.25, 1) };

En el ejemplo siguiente se usa OnPlatform la extensión de marcado para establecer selectivamente el color de ActivityIndicator :

<ActivityIndicator Color="{OnPlatform iOS=Black, Default=Default}"
                   IsRunning="True" />

El código de C# equivalente es el siguiente:

ActivityIndicator activityIndicator = new ActivityIndicator
{
    Color = Device.RuntimePlatform == Device.iOS ? Color.Black : Color.Default,
    IsRunning = true
};