在我的Xamarin Forms应用程序中,我有一个可以显示为已禁用的DatePicker。在Android上,DatePicker在禁用DatePicker时将文本呈现为黑色。由于背景较暗,我想将该颜色更改为灰色。
我在自定义渲染器中尝试了很多方法,但我无法弄明白。我甚至尝试过ColorStateList都无济于事。我无法在样式中设置它,因为背景颜色可以在明暗之间变换。
禁用DatePicker时更改日期字段颜色的正确方法是什么?
答案 0 :(得分:2)
您可以使用Custom Renderer并覆盖OnElementPropertyChanged
,以便在IsEnabled
切换时随时更改文字颜色。
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);
}
}
}
}
}