Xamarin.Forms Android 更改按钮图像的颜色
Xamarin.Forms Android change color of Button Image
我有一个 Android 的自定义 ButtonRenderer
,我想更改用于按钮的图像的颜色。
这是我的 ButtonRenderer
:
public class VolosBaseButtonRenderer : Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer {
public VolosBaseButtonRenderer(Context context) : base(context) { }
protected override void OnElementChanged(ElementChangedEventArgs<Button> e) {
base.OnElementChanged(e);
// What I must do here for change the Image color????
}
protected override AppCompatButton CreateNativeControl() {
var context = new ContextThemeWrapper(Context, Resource.Style.Widget_AppCompat_Button_Borderless);
var button = new AppCompatButton(context, null, Resource.Style.Widget_AppCompat_Button_Borderless);
return button;
}
}
我尝试了这些方法,但 none 奏效了:
Control.Background.SetColorFilter(global::Android.Graphics.Color.Blue, global::Android.Graphics.PorterDuff.Mode.SrcIn);
Control.Background.SetTint(Color.Red.ToAndroid());
如果可能的话,我可以在按钮上应用样式(但我不知道该怎么做)。
任何方法都可以。
谢谢!
假设您的自定义 Button 有两个属性,CustomImage
,它存储一个资源图像名称的字符串,即 "icon.png",另一个 ImageTintColor
,它存储一个 [=13] =] 对象,你可以像这样使用它:
var button = (CustomButton)Control.Element;
using (var image = GetScaleDrawable(Resources.GetDrawable(button.CustomImage.Split('.')[0]),
(int)button.WidthRequest,
(int)button.HeightRequest))
{
if (button.ImageTintColor != Xamarin.Forms.Color.Default)
image.SetColorFilter(button.ImageTintColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
this.Control.SetPadding(0, 0, 0, 0);
this.Control.SetCompoundDrawables(null, image, null, null);
}
我有一个 Android 的自定义 ButtonRenderer
,我想更改用于按钮的图像的颜色。
这是我的 ButtonRenderer
:
public class VolosBaseButtonRenderer : Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer {
public VolosBaseButtonRenderer(Context context) : base(context) { }
protected override void OnElementChanged(ElementChangedEventArgs<Button> e) {
base.OnElementChanged(e);
// What I must do here for change the Image color????
}
protected override AppCompatButton CreateNativeControl() {
var context = new ContextThemeWrapper(Context, Resource.Style.Widget_AppCompat_Button_Borderless);
var button = new AppCompatButton(context, null, Resource.Style.Widget_AppCompat_Button_Borderless);
return button;
}
}
我尝试了这些方法,但 none 奏效了:
Control.Background.SetColorFilter(global::Android.Graphics.Color.Blue, global::Android.Graphics.PorterDuff.Mode.SrcIn);
Control.Background.SetTint(Color.Red.ToAndroid());
如果可能的话,我可以在按钮上应用样式(但我不知道该怎么做)。
任何方法都可以。
谢谢!
假设您的自定义 Button 有两个属性,CustomImage
,它存储一个资源图像名称的字符串,即 "icon.png",另一个 ImageTintColor
,它存储一个 [=13] =] 对象,你可以像这样使用它:
var button = (CustomButton)Control.Element;
using (var image = GetScaleDrawable(Resources.GetDrawable(button.CustomImage.Split('.')[0]),
(int)button.WidthRequest,
(int)button.HeightRequest))
{
if (button.ImageTintColor != Xamarin.Forms.Color.Default)
image.SetColorFilter(button.ImageTintColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
this.Control.SetPadding(0, 0, 0, 0);
this.Control.SetCompoundDrawables(null, image, null, null);
}