我需要格式化“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>
几乎所有东西都能正常工作,除非我将空间划分两次,否则有时会删除最后一个符号。我无法绕过这种行为。
答案 0 :(得分:0)
在修复程序中,设置android:inputType="textPasswordVisible"
似乎可以解决问题。
PS。我看到你的数字只包含大写字符。如果您想要大写用户键入的内容,可以使用android:inputType="textVisiblePassword|textCapCharacters"
并将InputFilter.AllCaps过滤器添加到EditText。