如何使用xamarin.forms删除android中datepicker的底线

如何使用xamarin.forms删除android中datepicker的底线,xamarin.forms,react-native-android,Xamarin.forms,React Native Android,我在我的xamarin.forms应用程序中使用DatePicker控件,它显示了android设备中日期选择器的底线,但我不想要这条底线。我如何删除该行 我尝试使用一些自定义渲染来删除线条,但它不起作用。我尝试应用的渲染器是: public class BorderlessDatePickerRenderer:DatePickerRenderer { protected override void OnElementChanged(ElementChangedEventArgs<

我在我的xamarin.forms应用程序中使用DatePicker控件,它显示了android设备中日期选择器的底线,但我不想要这条底线。我如何删除该行

我尝试使用一些自定义渲染来删除线条,但它不起作用。我尝试应用的渲染器是:

public class BorderlessDatePickerRenderer:DatePickerRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
    {
        base.OnElementChanged(e);
        if (e.OldElement == null)
        {
            Control.Background = null;

            var layoutParams = new MarginLayoutParams(Control.LayoutParameters);
            layoutParams.SetMargins(0, 0, 0, 0);
            LayoutParameters = layoutParams;
            Control.LayoutParameters = layoutParams;
            Control.SetPadding(0, 0, 0, 0);
            SetPadding(0, 0, 0, 0);
        }
    }
}
public类无边界sdatepickerrenderer:DatePickerRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement==null)
{
Control.Background=null;
var layoutParams=新的MarginLayoutParams(Control.layoutparames);
layoutParams.SetMargins(0,0,0,0);
LayoutParameters=layoutParams;
Control.LayoutParameters=layoutParams;
控件。设置填充(0,0,0,0);
设置填充(0,0,0,0);
}
}
}
谁能帮我一下吗


谢谢。

您可以将背景设置为空,它应该可以工作:

  Control.SetBackgroundResource(0);
更新:

如有疑问,请随时回复

    [assembly: ExportRenderer(typeof(BorderlessDatePicker), typeof(BorderlessDatePickerRenderer))]
public class BorderlessDatePickerRenderer : DatePickerRenderer
{
    public static void Init() { }
    protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
    {
        base.OnElementChanged(e);
        if (e.OldElement == null)
        {
            Control.Background = null;

            var layoutParams = new MarginLayoutParams(Control.LayoutParameters);
            layoutParams.SetMargins(0, 0, 0, 0);
            LayoutParameters = layoutParams;
            GradientDrawable gd = new GradientDrawable();
            gd.SetStroke(0, Android.Graphics.Color.LightGray);
            Control.SetBackgroundDrawable(gd);
            Control.LayoutParameters = layoutParams;
            Control.SetPadding(0, 0, 0, 0);
            SetPadding(0, 0, 0, 0);
        }
    }
}
[程序集:导出渲染器(typeof(BorderlessDatePicker)、typeof(BorderlessDatePickerRenderer))]
公共类无边界SDatePickerRenderer:DatePickerRenderer
{
公共静态void Init(){}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement==null)
{
Control.Background=null;
var layoutParams=新的MarginLayoutParams(Control.layoutparames);
layoutParams.SetMargins(0,0,0,0);
LayoutParameters=layoutParams;
GradientDrawable gd=新的GradientDrawable();
gd.SetStroke(0,Android.Graphics.Color.LightGray);
对照组:立根拔除(gd);
Control.LayoutParameters=layoutParams;
控件。设置填充(0,0,0,0);
设置填充(0,0,0,0);
}
}
}

您可以将背景设置为空,它应该可以工作:

  Control.SetBackgroundResource(0);
更新:

如有疑问,请随时回复

    [assembly: ExportRenderer(typeof(BorderlessDatePicker), typeof(BorderlessDatePickerRenderer))]
public class BorderlessDatePickerRenderer : DatePickerRenderer
{
    public static void Init() { }
    protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
    {
        base.OnElementChanged(e);
        if (e.OldElement == null)
        {
            Control.Background = null;

            var layoutParams = new MarginLayoutParams(Control.LayoutParameters);
            layoutParams.SetMargins(0, 0, 0, 0);
            LayoutParameters = layoutParams;
            GradientDrawable gd = new GradientDrawable();
            gd.SetStroke(0, Android.Graphics.Color.LightGray);
            Control.SetBackgroundDrawable(gd);
            Control.LayoutParameters = layoutParams;
            Control.SetPadding(0, 0, 0, 0);
            SetPadding(0, 0, 0, 0);
        }
    }
}
[程序集:导出渲染器(typeof(BorderlessDatePicker)、typeof(BorderlessDatePickerRenderer))]
公共类无边界SDatePickerRenderer:DatePickerRenderer
{
公共静态void Init(){}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement==null)
{
Control.Background=null;
var layoutParams=新的MarginLayoutParams(Control.layoutparames);
layoutParams.SetMargins(0,0,0,0);
LayoutParameters=layoutParams;
GradientDrawable gd=新的GradientDrawable();
gd.SetStroke(0,Android.Graphics.Color.LightGray);
对照组:立根拔除(gd);
Control.LayoutParameters=layoutParams;
控件。设置填充(0,0,0,0);
设置填充(0,0,0,0);
}
}
}

您可以使用透明渐变来改变一个元素

var gd = new GradientDrawable();
gd.SetStroke(0, Android.Graphics.Color.Transparent);
Control.SetBackground(gd);

可以将透明渐变使用到OnElementChanged中

var gd = new GradientDrawable();
gd.SetStroke(0, Android.Graphics.Color.Transparent);
Control.SetBackground(gd);

,感谢您的回复。但此属性在我的案例中不起任何作用。感谢您的回复。但此属性在我的案例中不起任何作用。