【发布时间】:2018-02-05 13:03:41
【问题描述】:
我有使用 Stepper 的 Xamarin PCL 应用程序。我想改变我的Stepper 按钮的颜色,现在使用下面的渲染器。
在 PCL 中:
public class MyStepper : Stepper
{
public static readonly BindableProperty ColorProperty =
BindableProperty.Create(nameof(Color), typeof(Color), typeof(MyStepper), Color.Default);
public Color MyColor
{
get { return (Color)GetValue(ColorProperty); }
set { SetValue(ColorProperty, value); }
}
}
在 iOS 中:
public class MyStepperRenderer : StepperRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Stepper> e)
{
base.OnElementChanged(e);
MyStepper s = Element as MyStepper;
if (Control != null)
Control.TintColor = s.MyColor.ToUIColor();
}
}
在安卓中:
protected override void OnElementChanged(ElementChangedEventArgs<Stepper> e)
{
base.OnElementChanged(e);
MyStepper s = Element as MyStepper;
if (Control != null)
{
Control.GetChildAt(0).Background.SetColorFilter(s.MyColor.ToAndroid(), PorterDuff.Mode.Multiply);
Control.GetChildAt(1).Background.SetColorFilter(s.MyColor.ToAndroid(), PorterDuff.Mode.Multiply);
}
}
在 XAML 中:
<local:MyStepper MyColor="Red" Maximum="10" Minimum="0" ....... />
正如预期的那样,它会像附加的图像一样工作。但是有没有可能让 Android 颜色只改变按钮的“轮廓”,就像它在 iOS 中的样子?
【问题讨论】:
标签: xamarin xamarin.forms xamarin.android