重置EditText BackgroundColor为默认值

本文关键字:默认值 BackgroundColor EditText 重置 | 更新日期: 2023-09-27 17:52:46

我有一个EditText,然后:

private void RegEmail_TextChanged(object sender, Android.Text.TextChangedEventArgs e)
{
    var orginalDrawable = RegEmail.Background;
    if (RegEmail.Text.Contains("@") && (RegEmail.Text.Contains(".")))
    {
        RegEmailB = true;
        RegEmail.SetBackgroundColor(Color.Green);
    }
    else
    {
        RegEmailB = false;
        RegEmail.SetBackgroundColor(Color.Red);
    }
}           

我基本上需要把它设置回默认状态。但是我找到的大多数东西都在java中,或者根本不存在。

重置EditText BackgroundColor为默认值

必须将EditText的原始状态保存在TextChanged之外。这是一个完整的完全可行的解决方案。

private EditText RegEmail;
private Drawable _orginalDrawable;
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.Main);
    RegEmail = FindViewById<EditText>(Resource.Id.myEdt);
    _orginalDrawable = RegEmail.Background;
    RegEmail.TextChanged += (sender, e) =>
    {
        if (RegEmail.Text.Contains("@") && (RegEmail.Text.Contains(".")))
        {
            RegEmail.Background = _orginalDrawable;
        }
        else
        {
            RegEmail.SetBackgroundColor(Color.Red);
        }
    };
}

你可以在设置它之前获得颜色,以便在稍后的时间设置它,

 var buttonBackground = RegEmail.Background;
 Color backgroundColor;
    if(buttonBackground is ColorDrawable)
      {
         backgroundColor = (buttonBackground as ColorDrawable).Color;
         //You now have a background color.
      }
if(backgroundColor != null)
   RegEmail.SetBackgroundColor(backgroundColor);