Как изменить текст редактируемого текста в событии «Текст изменен» в Xamarin Android - PullRequest
1 голос
/ 04 апреля 2019

У меня проблема с изменением текста «EditText» в «Xamarin Android», я хочу поставить «/» после 2 символов, чтобы я мог получить текст вроде "MM/YY"когда пользователь нажимает «backspace», чтобы стереть его, текст не исчезает, я до сих пор разделил эти четыре символа с помощью функции «Заменить», но не могу вернуть эту «str» обратно в текст редактирования. Если я это сделаю, он простоСбои.
Код -TextChangedEvent of expiryEditText

            var Expirydata = expiryEditText.Text;
            if(Expirydata.Length == 2)
            {
                expiryEditText.Text = expiryEditText.Text + "/";
            }
            else if(Expirydata.Length ==5)
            {
                monthId = Expirydata.Substring(0, 2);
                yearId = Expirydata.Substring(Expirydata.Length - 2);
                var xx = monthId + "/"+ yearId;
                String str = Expirydata.ToString().Replace(Expirydata,xx);
               // expiryEditText.Text = xx.ToString();

            }
            else
            {

            }

1 Ответ

1 голос
/ 04 апреля 2019

Причина, по которой это происходит, заключается в том, что ваш текущий код не учитывает ту часть, где пользователь может нажать клавишу возврата, чтобы вернуться, чтобы снова удалить текст, для этого вы можете использовать свойство Start, чтобы узнать текущее значение и сделатьизменения соответственно

 if (expiryEditText.Length() == 2 && e.Start != 2)
    {
        expiryEditText.Append("/");
    }
else
    {
      if (expiryEditText.Length() >2  && expiryEditText.Text.IndexOf('-') == -1)
      {
        expiryEditText.Text = expiryEditText.Text.Insert(2, "-");
        expiryEditText.SetSelection(expiryEditText.Text.Length);
      }
    }

Удачи

Возврат в случае запросов.

...