输入的下划线不能删除

时间:2019-04-15 11:12:05

标签: xamarin.forms

我要输入不带下划线的条目。我尝试了两种解决方案,但都无法正常工作。

Control.Background = null;

进展不顺利,我采取了另一种解决方案:

GradientDrawable gd = new GradientDrawable();
            gd.SetColor(global::Android.Graphics.Color.Transparent);
            Control.SetBackground(gd);
            this.Control.SetRawInputType(Android.Text.InputTypes.TextFlagNoSuggestions);
            Control.SetHintTextColor(ColorStateList.ValueOf(global::Android.Graphics.Color.White));

它在android中也不能很好地运行,但是在ios上却可以正常工作。我不明白为什么。

2 个答案:

答案 0 :(得分:0)

您可以尝试添加名为editText_bg.xml的xml样式

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#FFFFFF" />
    <stroke
        android:width="1dp"
        android:color="#2f6699" />
    <corners 
        android:radius="10dp"            
        />
</shape>

您可以将此作为背景资源输入到条目中:

[assembly: ExportRenderer(typeof(CustomEntry), typeof(AndroidCustomEntryRenderer))]
namespace XXX.Droid.Renderer
{
    public class AndroidCustomEntryRenderer : EntryRenderer
    {
        public AndroidCustomEntryRenderer(Context context) : base(context)
        {
        }
        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                Control.SetBackgroundColor(global::Android.Graphics.Color.White);
                Control.SetBackgroundResource(Resource.Drawable.edittext_bg);
            }
        }
    }
} 

答案 1 :(得分:0)

尝试我的实现(适用于Android和ios)。 PlainEntry是从Xamarin.Forms.Entry

继承的空类。

Android

[assembly: ExportRenderer(typeof(PlainEntry), typeof(PlainEntryRenderer))]
namespace UR.Droid.Renderers
{
    public class PlainEntryRenderer : EntryRenderer
    {
        public PlainEntryRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                this.Control.
                    SetBackgroundColor(global::Android.Graphics.Color.Transparent);
                Control.SetPadding(0, 0, 0, 0);
            }
        }
    }
}

iOS

[assembly: ExportRenderer(typeof(PlainEntry), typeof(PlainEntryRenderer))]
namespace UR.iOS.Renderer
{
    class PlainEntryRenderer: EntryRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                Control.BorderStyle = UITextBorderStyle.None;
                Control.BackgroundColor = UIColor.FromRGBA(0, 0, 0, 0);
            }
        }
    }
}

如果要对所有Xamarin.Forms.Entry使用渲染器,请指定以下内容:

[assembly: ExportRenderer(typeof(Xamarin.Forms.Entry), typeof(PlainEntryRenderer))]