我需要将输入到 TextView 中的文本格式化为“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)
{
}
}
我为 TextView 创建了自定义主题
<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>
几乎一切正常,除了当我点击空格两次时它有时会删除最后一个符号。我无法绕过这种行为。
最佳答案
我昨天偶然发现了同样的问题。 Google 键盘或 EditText 实现似乎存在错误。当您双击空格键时,它会自动用一个句点和一个空格替换这两个空格。我认为这就是最后一个角色消失的问题的来源。
关于修复,设置 android:inputType="textPasswordVisible"
似乎可以解决问题。
附言。我看到你的数字只包含大写字符。如果您想将用户输入的内容大写,您可以使用 android:inputType="textVisiblePassword|textCapCharacters"
并将 InputFilter.AllCaps 过滤器添加到您的 EditText。
关于android - TextView 文本格式导致双倍空间上的最后一个符号删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28347228/