观书散遗帙,探古穷至妙。这篇文章主要讲述Xamarin.Forms Android改变Button Image的颜色相关的知识,希望能为你提供帮助。
我有一个自定义ButtonRenderer
android,我想改变我用于按钮的图像的颜色。
这是我的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());
【Xamarin.Forms Android改变Button Image的颜色】如果有可能我可以在按钮上应用样式(但我不知道该怎么做)。
任何方法都没问题。
谢谢!
答案假设您的自定义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);
}
推荐阅读
- RegisterNavigationServiceAppStart期间的MvxIoCResolveException
- Android ActionBar错误的布局方向
- Xamarin表单,在Visual Studio Android Emulator上运行的应用程序但在真实设备上崩溃
- 在xamarin.android中的absoluteLayout中定位到右下角
- 为什么在NUnit Android Test Runner中Asserts等于0(零)()
- 在Xamarin Android项目中的android Assets中添加文件夹会引发Build Error
- 无法在Android上使用C ++ OpenCV打开相机
- Xamarin Android - 如何在textview动画期间阻止文本移动
- 如何为Android转换器中的MvxColor指定Hex或RGB颜色