Checkbox 复选框大小Xamarin Android
我使用以下文章在我的Xamarin表单应用程序中实现了复选框:Checkbox 复选框大小Xamarin Android,checkbox,xamarin.forms,Checkbox,Xamarin.forms,我使用以下文章在我的Xamarin表单应用程序中实现了复选框: 我唯一的问题是,我无法设置Android的大小,在评论部分有一个问题,但是没有解决方案。无论我做什么,SizeRequest始终是64x64-有人能提供我无法调整大小的任何建议或原因吗?您是否尝试在第91行之前使用下面的代码来缩放控件: Control.ScaleX = 0.70; Control.ScaleY = 0.70; 也许我找到了一个,请检查以下步骤: 在自定义复选框控件中添加名为SizeRequest的Bindab
我唯一的问题是,我无法设置Android的大小,在评论部分有一个问题,但是没有解决方案。无论我做什么,SizeRequest始终是64x64-有人能提供我无法调整大小的任何建议或原因吗?您是否尝试在第91行之前使用下面的代码来缩放控件:
Control.ScaleX = 0.70;
Control.ScaleY = 0.70;
也许我找到了一个,请检查以下步骤:
- 在自定义复选框控件中添加名为
的SizeRequest
BindableProperty
- 创建一个方法
以获取默认复选框drawableGetDefaultCheckBoxDrawable
- 更改
方法以清除和调整文本大小,根据OnElementChanged
设置宽度/高度,重置按钮可绘制,并使用默认复选框可绘制设置新的背景可绘制SizeRequest
AndroidCheckboxRenderer.cs
:
private Drawable GetDefaultCheckBoxDrawable(Android.Views.View view)
{
TypedValue value = new TypedValue();
view.Context.Theme.ResolveAttribute(Android.Resource.Attribute.ListChoiceIndicatorMultiple, value, true);
var origImg = view.Context.Resources.GetDrawable(value.ResourceId);
var porterDuffColor = new Android.Graphics.PorterDuffColorFilter(Element.CheckColor.ToAndroid(), Android.Graphics.PorterDuff.Mode.SrcIn);
origImg.SetColorFilter(porterDuffColor);
return origImg;
}
protected override void OnElementChanged(ElementChangedEventArgs<CustomCheckbox> e)
{
...
// CheckBox displays its height from the TEXT, as well as images.
checkBox.Text = "";
checkBox.SetTextSize(Android.Util.ComplexUnitType.Sp, 0);
// Set the width and height based on SizeRequest
if (Element.SizeRequest >= 0)
{
checkBox.SetWidth((int)Element.SizeRequest);
checkBox.SetHeight((int)Element.SizeRequest);
}
// Reset the Button Drawable
checkBox.SetButtonDrawable(null);
// Set Background Drawable with the default CheckBox
checkBox.SetBackgroundDrawable(GetDefaultCheckBoxDrawable(this));
...
}
private Drawable GetDefaultCheckBoxDrawable(Android.Views.View)
{
TypedValue=新的TypedValue();
view.Context.Theme.ResolveAttribute(Android.Resource.Attribute.ListChoiceIndicatorMultiple,value,true);
var origImg=view.Context.Resources.GetDrawable(value.ResourceId);
var porterDuffColor=newandroid.Graphics.PorterDuffColorFilter(Element.CheckColor.ToAndroid(),Android.Graphics.PorterDuff.Mode.SrcIn);
原始设置颜色过滤器(porterDuffColor);
返回原点;
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
...
//复选框显示其相对于文本的高度以及图像。
复选框。Text=“”;
checkBox.SetTextSize(Android.Util.ComplexUnitType.Sp,0);
//根据SizeRequest设置宽度和高度
如果(Element.SizeRequest>=0)
{
checkBox.SetWidth((int)Element.SizeRequest);
checkBox.SetHeight((int)Element.SizeRequest);
}
//将按钮复位为可拖动
复选框.SetButtonDrawable(空);
//使用默认复选框设置背景可绘制
checkBox.SetBackgroundDrawable(GetDefaultCheckBoxDrawable(this));
...
}
查看完整的解决方案
我希望这能对您有所帮助。感谢您的及时回复-我将ScaleX和Y设置为1.5f(我想增加复选框的大小),但是这会导致复选框的一半显示-无论对齐方式如何这是一个很好的响应!!我更新了一些显示为不推荐的行,但除此之外,它工作得非常好!非常感谢。是的,如果有几行不推荐使用,我也会修复它们,并使回购协议保持最新。tks