【发布时间】:2019-08-31 22:15:49
【问题描述】:
我正在使用自定义渲染器来自定义进度条的高度和颜色,但进度条变得模糊:
我的 CustomRenderer 如下所示:
public class ColorProgressBarRenderer : ProgressBarRenderer
{
public ColorProgressBarRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ProgressBar> e)
{
base.OnElementChanged(e);
if (e.NewElement == null)
{
return;
}
if (Control != null)
{
UpdateBarColor();
}
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == ColorProgressBar.BarColorProperty.PropertyName)
{
UpdateBarColor();
}
}
private void UpdateBarColor()
{
var element = Element as ColorProgressBar;
Control.ProgressTintList = Android.Content.Res.ColorStateList.ValueOf(element.BarColor.ToAndroid());
Control.ScaleY = 10f;
}
}
我的 CustomProgressBar 如下所示:
public class ColorProgressBar : ProgressBar
{
//public static BindableProperty BarColorProperty = BindableProperty.Create<ColorProgressBar, Color>(p => p.BarColor, default(Color));
public static BindableProperty BarColorProperty = BindableProperty.Create(nameof(BarColor), typeof(Color), typeof(ColorProgressBar), default(Color));
public Color BarColor
{
get { return (Color)GetValue(BarColorProperty); }
set { SetValue(BarColorProperty, value); }
}
}
这只发生在 Android 中,我的 iOS 渲染器一切正常! 为什么会这样?
【问题讨论】:
-
你能显示你使用CustomProgressBar的axml吗,它没有模糊,但我认为这可能是ScaleY增加高度的结果
-
你的设备版本是什么?
-
我想我们永远不会知道...
标签: c# xamarin xamarin.forms xamarin.android