Xamarin.forms 图像是android picker自定义渲染中的重叠文本

Xamarin.forms 图像是android picker自定义渲染中的重叠文本,xamarin.forms,custom-controls,picker,Xamarin.forms,Custom Controls,Picker,我已经为android创建了picker的自定义渲染器。但箭头图像与picker文本重叠。如下面的屏幕截图所示 这是我的密码 public class AndroidCutomPicker : PickerRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Picker> e) { base.OnElementChange

我已经为android创建了picker的自定义渲染器。但箭头图像与picker文本重叠。如下面的屏幕截图所示

这是我的密码

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

}
公共类AndroidCutCompicker:PickerRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(Control!=null&&this.Element!=null)
{
Control.Background=AddPickerStyles();
控制。设定线(1);
//Control.TextSize*=0.25f;
}
}
公共层可绘制的AddPickerStyles()
{
ShapeDrawable border=新的ShapeDrawable();
border.Paint.Color=Android.Graphics.Color.Gray;
边框。设置填充(10,10,10,10);
边框.Paint.SetStyle(Paint.Style.Stroke);
Drawable[]层={border,GetDrawable()};
LayerDrawable LayerDrawable=新的LayerDrawable(层);
layerDrawable.SetLayerSet(0,0,0,0,0);
返回层可绘制;
}
私有BitmapDrawable GetDrawable()
{
var drawable=ContextCompat.GetDrawable(this.Context,Resource.drawable.dropdownarrow);
var bitmap=((BitmapDrawable)drawable.bitmap;
var result=新的BitmapDrawable(参考资料,Bitmap.CreateScaledBitmap(Bitmap,70,70,true));
result.Gravity=Android.Views.GravityFlags.Right;
返回结果;
}
}
请帮忙。
谢谢你

面对同样的问题并找到了这个问题,但最后我找到了一个解决方案,在你想要的地方添加一个填充。填充与元素的大小有关,所以我这样做

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