Xamarin Android DatePicker禁用文本颜色

时间:2018-02-03 20:29:08

标签: c# xamarin xamarin.forms android-datepicker

在我的Xamarin Forms应用程序中,我有一个可以显示为已禁用的DatePicker。在Android上,DatePicker在禁用DatePicker时将文本呈现为黑色。由于背景较暗,我想将该颜色更改为灰色。

我在自定义渲染器中尝试了很多方法,但我无法弄明白。我甚至尝试过ColorStateList都无济于事。我无法在样式中设置它,因为背景颜色可以在明暗之间变换。

禁用DatePicker时更改日期字段颜色的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用Custom Renderer并覆盖OnElementPropertyChanged,以便在IsEnabled切换时随时更改文字颜色。

Android自定义渲染器

using Android.Content;

using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

using CustomDatePicker.Droid;

[assembly: ExportRenderer(typeof(Picker), typeof(DisabledDatePickerRenderer))]
namespace CustomDatePicker.Droid
{
    public class DisabledDatePickerRenderer : DatePickerRenderer
    {
        public DisabledDatePickerRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);

            if (e.PropertyName.Equals(nameof(Element.IsEnabled)) && Control != null)
            {
                if (Element.IsEnabled)
                {
                    //Set the text color when the DatePicker is enabled
                    Control.SetTextColor(Android.Graphics.Color.Black);
                }
                else
                {
                    //Set the text color when the DatePicker is disabled
                    Control.SetTextColor(Android.Graphics.Color.Gray);
                }
            }
        }
    }
}