我为android创建了自定义渲染器选择器。但箭头图像是重叠的选择器文本。如下面的截图所示
这是我的代码
public class AndroidCutomPicker : PickerRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Picker> e)
{
base.OnElementChanged(e);
if (Control != null && this.Element != null)
{
Control.Background = AddPickerStyles();
Control.SetLines(1);
//Control.TextSize *= 0.25f;
}
}
public LayerDrawable AddPickerStyles()
{
ShapeDrawable border = new ShapeDrawable();
border.Paint.Color = Android.Graphics.Color.Gray;
border.SetPadding(10, 10, 10, 10);
border.Paint.SetStyle(Paint.Style.Stroke);
Drawable[] layers = { border, GetDrawable() };
LayerDrawable layerDrawable = new LayerDrawable(layers);
layerDrawable.SetLayerInset(0, 0, 0, 0, 0);
return layerDrawable;
}
private BitmapDrawable GetDrawable()
{
var drawable = ContextCompat.GetDrawable(this.Context, Resource.Drawable.dropdownarrow);
var bitmap = ((BitmapDrawable)drawable).Bitmap;
var result = new BitmapDrawable(Resources, Bitmap.CreateScaledBitmap(bitmap, 70, 70, true));
result.Gravity = Android.Views.GravityFlags.Right;
return result;
}
}
请帮忙。 谢谢
答案 0 :(得分:0)
面对同样的问题并找到这个问题,但最后我找到了一个解决方案,在你想要的地方添加一个填充,填充与元素的大小有关,所以我就这样做了
this.Control.SetPadding((int)(element.Width / 5), Control.PaddingTop, Control.PaddingRight, Control.PaddingBottom);
但是如果你有一个特定的常量绑定,你可以这样做
this.Control.SetPadding(Control.PaddingLeft+XXX, Control.PaddingTop+xxx, Control.PaddingRight+xxx, Control.PaddingBottom+xxx);