微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试将凭据置于 xamarin 表单应用程序中的条目控制中时,redmi 设备重新启动

如何解决尝试将凭据置于 xamarin 表单应用程序中的条目控制中时,redmi 设备重新启动

我在特定设备(小米 Note7 Pro)上遇到输入字段问题,即当我尝试在输入字段中输入值时,它会导致设备(小米 Note7 Pro)重启 Miui。我已经做了一些挖掘,但还没有找到任何解决方案。请帮我解决这个问题。

我也尝试在输入时更改键盘类型,但仍然没有成功。下面是入口控制xaml的示例:

<AbsoluteLayout>
    <controls:ExtEntry x:Name="txtUsername" 
                       Placeholder="Username" 
                       Keyboard="Email" 
                       Text="{Binding Username}" 
                       Style="{StaticResource EntryImage}"/>
    <Image Source="usericon"
           Style="{StaticResource RightimageIcon}"/>
</AbsoluteLayout>

以下是我的 ExtEntry(渲染器)的代码

public class CustomEntry : EntryRenderer
{
    ExtEntry element;

    public CustomEntry(Context context) : base(context)
    {
    }

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

        if (Control == null || e.NewElement == null) return;

        element = (ExtEntry)this.Element;

        var editText = this.Control;
        if (!string.IsNullOrEmpty(element.Image))
        {
            switch (element.ImageAlignment)
            {
                case ImageAlignment.Left:
                    editText.SetCompoundDrawablesWithIntrinsicBounds(
                        GetDrawable(element.Image),null,null);

                    break;
                case ImageAlignment.Right:
                    editText.SetCompoundDrawablesWithIntrinsicBounds(
                        null,GetDrawable(element.Image),null);

                    break;
            }
        }
        editText.CompoundDrawablePadding = 25;

        // Control.Background.SetColorFilter(element.LineColor.ToAndroid(),//     PorterDuff.Mode.SrcAtop);

        Control.FocusChange += Control_FocusChange;

        if (element.IsBorderVisible)
        {
            GradientDrawable gd = new GradientDrawable();
            gd.SetShape(ShapeType.Rectangle);
            gd.SetCornerRadius(3);
            gd.Setstroke(3,Android.Graphics.Color.Rgb(188,196,205));
            Control.SetBackground(gd);
        }

        Control.CustomSelectionActionModeCallback = new Callback();
        Control.SetPadding(10,5,10,5);
        Control.LongClickable = false;
    }

    protected override void OnElementPropertyChanged(object sender,PropertyChangedEventArgs e)
    {
        base.OnElementPropertyChanged(sender,e);
        if (e.PropertyName.Equals(nameof(element.Image)))
        {
            var editText = this.Control;
            if (!string.IsNullOrEmpty(element.Image))
            {
                switch (element.ImageAlignment)
                {
                    case ImageAlignment.Left:
                        editText.SetCompoundDrawablesWithIntrinsicBounds(
                            GetDrawable(element.Image),null);

                        break;
                    case ImageAlignment.Right:
                        editText.SetCompoundDrawablesWithIntrinsicBounds(null,null);

                        break;
                }
            }
            editText.CompoundDrawablePadding = 25;
        }
    }

    private void Control_FocusChange(object sender,FocusChangeEventArgs e)
    {
        if (Control.HasFocus)
        {
            if (element.IsBorderVisible)
            {
                GradientDrawable gd = new GradientDrawable();
                gd.Setstroke(3,Android.Graphics.Color.Rgb(29,74,147));
                Control.SetBackground(gd);
            }
        }
        else
        {
            if (element.IsBorderVisible)
            {
                GradientDrawable gd = new GradientDrawable();
                gd.Setstroke(3,205));
                Control.SetBackground(gd);
            }
        }
    }

    private Drawable GetDrawable(string imageEntryImage)
    {
        int resID = Resources.GetIdentifier(imageEntryImage,"drawable",this.Context.PackageName);

        var drawable = ContextCompat.GetDrawable(this.Context,resID);
        var bitmap = ((BitmapDrawable)drawable).Bitmap;
        Drawable d = new BitmapDrawable(Resources,Bitmap.CreateScaledBitmap(bitmap,element.ImageHeight,element.ImageWidth,true));

        return d;
    }
}

请有人帮我解决这个问题。我已经尝试了很多方法解决这个问题,但还没有找到任何解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。