gpt4 book ai didi

c# - Xamarin.Forms Android 更改按钮图像的颜色

转载 作者:行者123 更新时间:2023-11-30 23:04:54 25 4
gpt4 key购买 nike

我有一个用于 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;
}
}

我尝试了这些方法,但都没有用:

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 存储一个 Xamarin.Forms.Color 对象,您可以像这样使用它:

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);
}

关于c# - Xamarin.Forms Android 更改按钮图像的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49107480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com