void init(IAttributeSet attrs)
        {
            if (attrs != null)
            {
                var a = Context.ObtainStyledAttributes(attrs, Resource.Styleable.FlatUI);

                var themeName = a.GetString(Resource.Styleable.FlatUI_theme) ?? string.Empty;

                theme = FlatUI.GetTheme(themeName);

                style   = a.GetInt(Resource.Styleable.FlatUI_fieldStyle, 0);
                radius  = a.GetDimensionPixelSize(Resource.Styleable.FlatUI_cornerRadius, radius);
                padding = a.GetDimensionPixelSize(Resource.Styleable.FlatUI_textPadding, padding);

                Enum.TryParse <FlatUI.FlatTextAppearance> (
                    a.GetInt(Resource.Styleable.FlatUI_textAppearance, (int)textAppearance).ToString(), out textAppearance);
                Enum.TryParse <FlatUI.FlatFontFamily> (
                    a.GetInt(Resource.Styleable.FlatUI_fontFamily, (int)fontFamily).ToString(), out fontFamily);
                Enum.TryParse <FlatUI.FlatFontWeight> (
                    a.GetInt(Resource.Styleable.FlatUI_fontWeight, (int)fontWeight).ToString(), out fontWeight);

                a.Recycle();
            }

            SetTheme(this, theme, fontFamily, fontWeight, textAppearance, style, radius, padding, border);
        }
Beispiel #2
0
        void init(IAttributeSet attrs)
        {
            if (attrs != null)
            {
                var a = Context.ObtainStyledAttributes(attrs, Resource.Styleable.FlatUI);

                var themeName = a.GetString(Resource.Styleable.FlatUI_theme) ?? string.Empty;

                theme = FlatUI.GetTheme(themeName);

                textColor             = a.GetInt(Resource.Styleable.FlatUI_textColor, textColor);
                backgroundColor       = a.GetInt(Resource.Styleable.FlatUI_backgroundColor, backgroundColor);
                customBackgroundColor = a.GetInt(Resource.Styleable.FlatUI_customBackgroundColor, customBackgroundColor);
                cornerRadius          = a.GetInt(Resource.Styleable.FlatUI_cornerRadius, cornerRadius);

                Enum.TryParse <FlatUI.FlatFontFamily> (
                    a.GetInt(Resource.Styleable.FlatUI_fontFamily, (int)fontFamily).ToString(), out fontFamily);
                Enum.TryParse <FlatUI.FlatFontWeight> (
                    a.GetInt(Resource.Styleable.FlatUI_fontWeight, (int)fontWeight).ToString(), out fontWeight);

                a.Recycle();
            }

            SetTheme(this, theme, fontFamily, fontWeight, textColor, backgroundColor, customBackgroundColor, cornerRadius);
        }
		public static void SetTheme(TextView textView, FlatTheme theme,
			FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, int textColor, int backgroundColor,
			int customBackgroundColor, int cornerRadius)
		{

			if (backgroundColor != -1)
			{
				var bgColor = theme.DarkAccentColor;

				if (backgroundColor == 0)
					bgColor = theme.DarkAccentColor;
				else if (backgroundColor == 1)
					bgColor = theme.BackgroundColor;
				else if (backgroundColor == 2)
					bgColor = theme.LightAccentColor;
				else if (backgroundColor == 3)
					bgColor = theme.VeryLightAccentColor;

				GradientDrawable gradientDrawable = new GradientDrawable();
				gradientDrawable.SetColor(bgColor);
				gradientDrawable.SetCornerRadius(cornerRadius);
				textView.SetBackgroundDrawable(gradientDrawable);
			} 
			else if (customBackgroundColor != -1) 
			{
				var bgColor = theme.DarkAccentColor;

				if (customBackgroundColor == 0)
					bgColor = theme.DarkAccentColor;
				else if (customBackgroundColor == 1)
					bgColor = theme.BackgroundColor;
				else if (customBackgroundColor == 2)
					bgColor = theme.LightAccentColor;
				else if (customBackgroundColor == 3)
					bgColor = theme.VeryLightAccentColor;

				GradientDrawable gradientDrawable = new GradientDrawable();
				gradientDrawable.SetColor(bgColor);
				gradientDrawable.SetCornerRadius(cornerRadius);
				textView.SetBackgroundDrawable(gradientDrawable);
			}

			var txtColor = theme.VeryLightAccentColor;
			if (textColor == 0)
				txtColor = theme.DarkAccentColor;
			if (textColor == 1)
				txtColor = theme.BackgroundColor;
			if (textColor == 2)
				txtColor = theme.LightAccentColor;
			if (textColor == 3)
				txtColor = theme.VeryLightAccentColor;

			textView.SetTextColor(txtColor);

			var typeface = FlatUI.GetFont(textView.Context, fontFamily, fontWeight);
			if (typeface != null)
				textView.SetTypeface(typeface, TypefaceStyle.Normal);
		}
        public static void SetTheme(EditText editText, FlatTheme theme,
                                    FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, FlatUI.FlatTextAppearance textAppearance,
                                    int style, int radius, int padding, int border)
        {
            float[] outerR = new float[] { radius, radius, radius, radius, radius, radius, radius, radius };

            // creating normal state drawable
            var normalFront = new ShapeDrawable(new RoundRectShape(outerR, null, null));

            normalFront.SetPadding(padding, padding, padding, padding);

            var normalBack = new ShapeDrawable(new RoundRectShape(outerR, null, null));

            normalBack.SetPadding(border, border, border, border);

            if (style == 0)                           // flat
            {
                normalFront.Paint.Color = Color.Transparent;
                normalBack.Paint.Color  = theme.LightAccentColor;
                editText.SetTextColor(theme.VeryLightAccentColor);
            }
            else if (style == 1)                      // box
            {
                normalFront.Paint.Color = Color.White;
                normalBack.Paint.Color  = theme.LightAccentColor;
                editText.SetTextColor(theme.BackgroundColor);
            }
            else if (style == 2)                      // transparent
            {
                normalFront.Paint.Color = Color.Transparent;
                normalBack.Paint.Color  = Color.Transparent;
                editText.SetTextColor(theme.BackgroundColor);
            }

            Drawable[]    d      = { normalBack, normalFront };
            LayerDrawable normal = new LayerDrawable(d);

            editText.SetBackgroundDrawable(normal);

            editText.SetHintTextColor(theme.VeryLightAccentColor);

            if (textAppearance == FlatUI.FlatTextAppearance.Dark)
            {
                editText.SetTextColor(theme.DarkAccentColor);
            }
            else if (textAppearance == FlatUI.FlatTextAppearance.Light)
            {
                editText.SetTextColor(theme.VeryLightAccentColor);
            }

            var typeface = FlatUI.GetFont(editText.Context, fontFamily, fontWeight);

            if (typeface != null)
            {
                editText.SetTypeface(typeface, TypefaceStyle.Normal);
            }
        }
        void init(IAttributeSet attrs)
        {
            if (attrs != null)
            {
                var a = Context.ObtainStyledAttributes(attrs, Resource.Styleable.FlatUI);

                var themeName = a.GetString(Resource.Styleable.FlatUI_theme) ?? string.Empty;

                theme = FlatUI.GetTheme(themeName);

                a.Recycle();
            }

            SetTheme(this, theme);
        }
		public static void SetTheme(EditText editText, FlatTheme theme, 
			FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, FlatUI.FlatTextAppearance textAppearance,
			int style, int radius, int padding, int border)
		{
			float[] outerR = new float[]{radius, radius, radius, radius, radius, radius, radius, radius};

			// creating normal state drawable
			var normalFront = new ShapeDrawable(new RoundRectShape(outerR, null, null));
			normalFront.SetPadding(padding, padding, padding, padding);

			var normalBack = new ShapeDrawable(new RoundRectShape(outerR, null, null));
			normalBack.SetPadding(border, border, border, border);

			if (style == 0) {             // flat
				normalFront.Paint.Color = Color.Transparent;
				normalBack.Paint.Color = theme.LightAccentColor;
				editText.SetTextColor(theme.VeryLightAccentColor);

			} else if (style == 1) {      // box
				normalFront.Paint.Color = Color.White;
				normalBack.Paint.Color = theme.LightAccentColor;
				editText.SetTextColor(theme.BackgroundColor);

			} else if (style == 2) {      // transparent
				normalFront.Paint.Color = Color.Transparent;
				normalBack.Paint.Color = Color.Transparent;
				editText.SetTextColor(theme.BackgroundColor);
			}

			Drawable[] d = {normalBack, normalFront};
			LayerDrawable normal = new LayerDrawable(d);

			editText.SetBackgroundDrawable(normal);

			editText.SetHintTextColor(theme.VeryLightAccentColor);

			if (textAppearance == FlatUI.FlatTextAppearance.Dark) editText.SetTextColor(theme.DarkAccentColor);
			else if (textAppearance == FlatUI.FlatTextAppearance.Light) editText.SetTextColor(theme.VeryLightAccentColor);

			var typeface = FlatUI.GetFont(editText.Context, fontFamily, fontWeight);
			if (typeface != null)
				editText.SetTypeface(typeface, TypefaceStyle.Normal);
		}
		public static void SetTheme(CheckBox checkBox, FlatTheme theme, 
			FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, int radius, int size, int border)
		{
			// creating unchecked-enabled state drawable
			GradientDrawable uncheckedEnabled = new GradientDrawable();
			uncheckedEnabled.SetCornerRadius(radius);
			uncheckedEnabled.SetSize(size, size);
			uncheckedEnabled.SetColor(Color.Transparent);
			uncheckedEnabled.SetStroke(border, theme.LightAccentColor);

			// creating checked-enabled state drawable
			GradientDrawable checkedOutside = new GradientDrawable();
			checkedOutside.SetCornerRadius(radius);
			checkedOutside.SetSize(size, size);
			checkedOutside.SetColor(Color.Transparent);
			checkedOutside.SetStroke(border, theme.LightAccentColor);

			PaintDrawable checkedCore = new PaintDrawable(theme.LightAccentColor);
			checkedCore.SetCornerRadius(radius);
			checkedCore.SetIntrinsicHeight(size);
			checkedCore.SetIntrinsicWidth(size);
			InsetDrawable checkedInside = new InsetDrawable(checkedCore, border + 2, border + 2, border + 2, border + 2);

			Drawable[] checkedEnabledDrawable = {checkedOutside, checkedInside};
			LayerDrawable checkedEnabled = new LayerDrawable(checkedEnabledDrawable);

			// creating unchecked-enabled state drawable
			GradientDrawable uncheckedDisabled = new GradientDrawable();
			uncheckedDisabled.SetCornerRadius(radius);
			uncheckedDisabled.SetSize(size, size);
			uncheckedDisabled.SetColor(Color.Transparent);
			uncheckedDisabled.SetStroke(border, theme.VeryLightAccentColor);

			// creating checked-disabled state drawable
			GradientDrawable checkedOutsideDisabled = new GradientDrawable();
			checkedOutsideDisabled.SetCornerRadius(radius);
			checkedOutsideDisabled.SetSize(size, size);
			checkedOutsideDisabled.SetColor(Color.Transparent);
			checkedOutsideDisabled.SetStroke(border, theme.VeryLightAccentColor);

			PaintDrawable checkedCoreDisabled = new PaintDrawable(theme.VeryLightAccentColor);
			checkedCoreDisabled.SetCornerRadius(radius);
			checkedCoreDisabled.SetIntrinsicHeight(size);
			checkedCoreDisabled.SetIntrinsicWidth(size);
			InsetDrawable checkedInsideDisabled = new InsetDrawable(checkedCoreDisabled, border + 2, border + 2, border + 2, border + 2);

			Drawable[] checkedDisabledDrawable = {checkedOutsideDisabled, checkedInsideDisabled};
			LayerDrawable checkedDisabled = new LayerDrawable(checkedDisabledDrawable);


			StateListDrawable states = new StateListDrawable();
			states.AddState(new int[]{-Android.Resource.Attribute.StateChecked, Android.Resource.Attribute.StateEnabled}, uncheckedEnabled);
			states.AddState(new int[]{Android.Resource.Attribute.StateChecked, Android.Resource.Attribute.StateEnabled}, checkedEnabled);
			states.AddState(new int[]{-Android.Resource.Attribute.StateChecked, -Android.Resource.Attribute.StateEnabled}, uncheckedDisabled);
			states.AddState(new int[]{Android.Resource.Attribute.StateChecked, -Android.Resource.Attribute.StateEnabled}, checkedDisabled);
			checkBox.SetButtonDrawable(states);

			// setting padding for avoiding text to be appear on icon
			checkBox.SetPadding(size / 4 * 5, 0, 0, 0);
			checkBox.SetTextColor(theme.LightAccentColor);

			var typeface = FlatUI.GetFont(checkBox.Context, fontFamily, fontWeight);
			if (typeface != null) 
				checkBox.SetTypeface(typeface, TypefaceStyle.Normal);
		}
Beispiel #8
0
        public static void SetTheme(TextView textView, FlatTheme theme,
                                    FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, int textColor, int backgroundColor,
                                    int customBackgroundColor, int cornerRadius)
        {
            if (backgroundColor != -1)
            {
                var bgColor = theme.DarkAccentColor;

                if (backgroundColor == 0)
                {
                    bgColor = theme.DarkAccentColor;
                }
                else if (backgroundColor == 1)
                {
                    bgColor = theme.BackgroundColor;
                }
                else if (backgroundColor == 2)
                {
                    bgColor = theme.LightAccentColor;
                }
                else if (backgroundColor == 3)
                {
                    bgColor = theme.VeryLightAccentColor;
                }

                GradientDrawable gradientDrawable = new GradientDrawable();
                gradientDrawable.SetColor(bgColor);
                gradientDrawable.SetCornerRadius(cornerRadius);
                textView.SetBackgroundDrawable(gradientDrawable);
            }
            else if (customBackgroundColor != -1)
            {
                var bgColor = theme.DarkAccentColor;

                if (customBackgroundColor == 0)
                {
                    bgColor = theme.DarkAccentColor;
                }
                else if (customBackgroundColor == 1)
                {
                    bgColor = theme.BackgroundColor;
                }
                else if (customBackgroundColor == 2)
                {
                    bgColor = theme.LightAccentColor;
                }
                else if (customBackgroundColor == 3)
                {
                    bgColor = theme.VeryLightAccentColor;
                }

                GradientDrawable gradientDrawable = new GradientDrawable();
                gradientDrawable.SetColor(bgColor);
                gradientDrawable.SetCornerRadius(cornerRadius);
                textView.SetBackgroundDrawable(gradientDrawable);
            }

            var txtColor = theme.VeryLightAccentColor;

            if (textColor == 0)
            {
                txtColor = theme.DarkAccentColor;
            }
            if (textColor == 1)
            {
                txtColor = theme.BackgroundColor;
            }
            if (textColor == 2)
            {
                txtColor = theme.LightAccentColor;
            }
            if (textColor == 3)
            {
                txtColor = theme.VeryLightAccentColor;
            }

            textView.SetTextColor(txtColor);

            var typeface = FlatUI.GetFont(textView.Context, fontFamily, fontWeight);

            if (typeface != null)
            {
                textView.SetTypeface(typeface, TypefaceStyle.Normal);
            }
        }
Beispiel #9
0
        public static void SetTheme(CheckBox checkBox, FlatTheme theme,
                                    FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, int radius, int size, int border)
        {
            // creating unchecked-enabled state drawable
            GradientDrawable uncheckedEnabled = new GradientDrawable();

            uncheckedEnabled.SetCornerRadius(radius);
            uncheckedEnabled.SetSize(size, size);
            uncheckedEnabled.SetColor(Color.Transparent);
            uncheckedEnabled.SetStroke(border, theme.LightAccentColor);

            // creating checked-enabled state drawable
            GradientDrawable checkedOutside = new GradientDrawable();

            checkedOutside.SetCornerRadius(radius);
            checkedOutside.SetSize(size, size);
            checkedOutside.SetColor(Color.Transparent);
            checkedOutside.SetStroke(border, theme.LightAccentColor);

            PaintDrawable checkedCore = new PaintDrawable(theme.LightAccentColor);

            checkedCore.SetCornerRadius(radius);
            checkedCore.SetIntrinsicHeight(size);
            checkedCore.SetIntrinsicWidth(size);
            InsetDrawable checkedInside = new InsetDrawable(checkedCore, border + 2, border + 2, border + 2, border + 2);

            Drawable[]    checkedEnabledDrawable = { checkedOutside, checkedInside };
            LayerDrawable checkedEnabled         = new LayerDrawable(checkedEnabledDrawable);

            // creating unchecked-enabled state drawable
            GradientDrawable uncheckedDisabled = new GradientDrawable();

            uncheckedDisabled.SetCornerRadius(radius);
            uncheckedDisabled.SetSize(size, size);
            uncheckedDisabled.SetColor(Color.Transparent);
            uncheckedDisabled.SetStroke(border, theme.VeryLightAccentColor);

            // creating checked-disabled state drawable
            GradientDrawable checkedOutsideDisabled = new GradientDrawable();

            checkedOutsideDisabled.SetCornerRadius(radius);
            checkedOutsideDisabled.SetSize(size, size);
            checkedOutsideDisabled.SetColor(Color.Transparent);
            checkedOutsideDisabled.SetStroke(border, theme.VeryLightAccentColor);

            PaintDrawable checkedCoreDisabled = new PaintDrawable(theme.VeryLightAccentColor);

            checkedCoreDisabled.SetCornerRadius(radius);
            checkedCoreDisabled.SetIntrinsicHeight(size);
            checkedCoreDisabled.SetIntrinsicWidth(size);
            InsetDrawable checkedInsideDisabled = new InsetDrawable(checkedCoreDisabled, border + 2, border + 2, border + 2, border + 2);

            Drawable[]    checkedDisabledDrawable = { checkedOutsideDisabled, checkedInsideDisabled };
            LayerDrawable checkedDisabled         = new LayerDrawable(checkedDisabledDrawable);


            StateListDrawable states = new StateListDrawable();

            states.AddState(new int[] { -Android.Resource.Attribute.StateChecked, Android.Resource.Attribute.StateEnabled }, uncheckedEnabled);
            states.AddState(new int[] { Android.Resource.Attribute.StateChecked, Android.Resource.Attribute.StateEnabled }, checkedEnabled);
            states.AddState(new int[] { -Android.Resource.Attribute.StateChecked, -Android.Resource.Attribute.StateEnabled }, uncheckedDisabled);
            states.AddState(new int[] { Android.Resource.Attribute.StateChecked, -Android.Resource.Attribute.StateEnabled }, checkedDisabled);
            checkBox.SetButtonDrawable(states);

            // setting padding for avoiding text to be appear on icon
            checkBox.SetPadding(size / 4 * 5, 0, 0, 0);
            checkBox.SetTextColor(theme.LightAccentColor);

            var typeface = FlatUI.GetFont(checkBox.Context, fontFamily, fontWeight);

            if (typeface != null)
            {
                checkBox.SetTypeface(typeface, TypefaceStyle.Normal);
            }
        }
        public static void SetTheme(Button button, FlatTheme theme, FlatUI.FlatTextAppearance textAppearance,
                                    FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, bool isFullFlat, int padding, int radius)
        {
            var bottom = 5;

            float[] outerR = { radius, radius, radius, radius, radius, radius, radius, radius };

            // creating normal state drawable
            var normalFront = new ShapeDrawable(new RoundRectShape(outerR, null, null));

            normalFront.Paint.Color = theme.LightAccentColor;
            normalFront.SetPadding(padding, padding, padding, padding);

            var normalBack = new ShapeDrawable(new RoundRectShape(outerR, null, null));

            normalBack.Paint.Color = theme.BackgroundColor;

            if (isFullFlat)
            {
                bottom = 0;
            }

            normalBack.SetPadding(0, 0, 0, bottom);

            Drawable[] d      = { normalBack, normalFront };
            var        normal = new LayerDrawable(d);

            // creating pressed state drawable
            var pressedFront = new ShapeDrawable(new RoundRectShape(outerR, null, null));

            pressedFront.Paint.Color = theme.BackgroundColor;

            var pressedBack = new ShapeDrawable(new RoundRectShape(outerR, null, null));

            pressedBack.Paint.Color = theme.DarkAccentColor;

            if (!isFullFlat)
            {
                pressedBack.SetPadding(0, 0, 0, 3);
            }

            Drawable[] d2      = { pressedBack, pressedFront };
            var        pressed = new LayerDrawable(d2);

            // creating disabled state drawable
            var disabledFront = new ShapeDrawable(new RoundRectShape(outerR, null, null));

            disabledFront.Paint.Color = theme.VeryLightAccentColor;

            var disabledBack = new ShapeDrawable(new RoundRectShape(outerR, null, null));

            disabledBack.Paint.Color = theme.LightAccentColor;
            if (!isFullFlat)
            {
                disabledBack.SetPadding(0, 0, 0, padding);
            }

            Drawable[] d3       = { disabledBack, disabledFront };
            var        disabled = new LayerDrawable(d3);

            var states = new StateListDrawable();

            states.AddState(new [] { Android.Resource.Attribute.StatePressed, Android.Resource.Attribute.StateEnabled }, pressed);
            states.AddState(new [] { Android.Resource.Attribute.StateFocused, Android.Resource.Attribute.StateEnabled }, pressed);
            states.AddState(new [] { Android.Resource.Attribute.StateEnabled }, normal);
            states.AddState(new [] { -Android.Resource.Attribute.StateEnabled }, disabled);

            button.SetBackgroundDrawable(states);

            if (textAppearance == FlatUI.FlatTextAppearance.Dark)
            {
                button.SetTextColor(theme.DarkAccentColor);
            }
            else if (textAppearance == FlatUI.FlatTextAppearance.Light)
            {
                button.SetTextColor(theme.VeryLightAccentColor);
            }
            else
            {
                button.SetTextColor(Android.Graphics.Color.White);
            }

            var typeface = FlatUI.GetFont(button.Context, fontFamily, fontWeight);

            if (typeface != null)
            {
                button.SetTypeface(typeface, Android.Graphics.TypefaceStyle.Normal);
            }
        }
		public static void SetTheme(Button button, FlatTheme theme, FlatUI.FlatTextAppearance textAppearance,
			FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, bool isFullFlat, int padding, int radius)
		{
			var bottom = 5;

			float[] outerR = {radius, radius, radius, radius, radius, radius, radius, radius};

			// creating normal state drawable
			var normalFront = new ShapeDrawable(new RoundRectShape(outerR, null, null));
			normalFront.Paint.Color = theme.LightAccentColor;
			normalFront.SetPadding(padding, padding, padding, padding);

			var normalBack = new ShapeDrawable(new RoundRectShape(outerR, null, null));
			normalBack.Paint.Color = theme.BackgroundColor;

			if (isFullFlat) 
				bottom = 0;

			normalBack.SetPadding(0, 0, 0, bottom);

			Drawable[] d = {normalBack, normalFront};
			var normal = new LayerDrawable(d);

			// creating pressed state drawable
			var pressedFront = new ShapeDrawable(new RoundRectShape(outerR, null, null));
			pressedFront.Paint.Color = theme.BackgroundColor;

			var pressedBack = new ShapeDrawable(new RoundRectShape(outerR, null, null));
			pressedBack.Paint.Color = theme.DarkAccentColor;

			if (!isFullFlat) 
				pressedBack.SetPadding(0, 0, 0, 3);

			Drawable[] d2 = {pressedBack, pressedFront};
			var pressed = new LayerDrawable(d2);

			// creating disabled state drawable
			var disabledFront = new ShapeDrawable(new RoundRectShape(outerR, null, null));
			disabledFront.Paint.Color = theme.VeryLightAccentColor;

			var disabledBack = new ShapeDrawable(new RoundRectShape(outerR, null, null));
			disabledBack.Paint.Color = theme.LightAccentColor;
			if (!isFullFlat) disabledBack.SetPadding(0, 0, 0, padding);

			Drawable[] d3 = {disabledBack, disabledFront};
			var disabled = new LayerDrawable(d3);

			var states = new StateListDrawable();

			states.AddState(new []{ Android.Resource.Attribute.StatePressed, Android.Resource.Attribute.StateEnabled }, pressed);
			states.AddState(new []{ Android.Resource.Attribute.StateFocused, Android.Resource.Attribute.StateEnabled }, pressed);
			states.AddState(new []{ Android.Resource.Attribute.StateEnabled }, normal);
			states.AddState(new []{-Android.Resource.Attribute.StateEnabled}, disabled);

			button.SetBackgroundDrawable (states);

			if (textAppearance == FlatUI.FlatTextAppearance.Dark) 
				button.SetTextColor(theme.DarkAccentColor);
			else if (textAppearance == FlatUI.FlatTextAppearance.Light) 
				button.SetTextColor(theme.VeryLightAccentColor);
			else 
				button.SetTextColor(Android.Graphics.Color.White);

			var typeface = FlatUI.GetFont(button.Context, fontFamily, fontWeight);
			if (typeface != null)
				button.SetTypeface(typeface, Android.Graphics.TypefaceStyle.Normal);
		}