TextView文本格式导致双空格上的最后一个符号删除

时间:2015-02-05 15:01:09

标签: android xamarin

我需要格式化“11 11 111111”

格式输入文本视图的文本

我创建了自定义TextFormatter

class DocumentTextWatcher : Java.Lang.Object, ITextWatcher
{
    private EditText _et;

    int _state = 0;

    public DocumentTextWatcher(EditText et)
    {
        _et = et;
    }

    public void AfterTextChanged(IEditable s)
    {
        if (_state < 1)
        {
            _state++;

            var text = s.ToString();
            var str = new Java.Lang.String(DocumentFormatter.FormatNumber(text).ToUpperInvariant());

            s.Replace(0, text.Length, str, 0, str.Length());
        }
        else
        {
            _state = 0;
        }
    }

    public void BeforeTextChanged(Java.Lang.ICharSequence s, int start, int count, int after)
    {
    }

    public void OnTextChanged(Java.Lang.ICharSequence s, int start, int before, int count)
    {
    }
}

我为文字视图创建了自定义主题

<style name="Widget.FinesTheme.Number" parent="Widget.FinesTheme.EditText">    
  <item name="android:capitalize">characters</item>
  <item name="android:maxLength">12</item>
  <item name="android:singleLine">true</item>
  <item name="android:inputType">textCapCharacters|textFilter|textNoSuggestions</item>
  <item name="android:digits">@string/filter_list</item>   
</style>

过滤器列表=

<'string name="filter_list">0 123456789АВЕКМНОРСТХУABEKMHOPCTXY</string>

几乎所有东西都能正常工作,除非我将空间划分两次,否则有时会删除最后一个符号。我无法绕过这种行为。

1 个答案:

答案 0 :(得分:0)

昨天我偶然发现了同样的问题。 Google键盘或EditText实施似乎存在错误。双击空格键时,它会自动用句点和空格替换这两个空格。我认为这是最后一个角色消失的问题来自。

在修复程序中,设置android:inputType="textPasswordVisible"似乎可以解决问题。

PS。我看到你的数字只包含大写字符。如果您想要大写用户键入的内容,可以使用android:inputType="textVisiblePassword|textCapCharacters"并将InputFilter.AllCaps过滤器添加到EditText。