我创建一个转换器应用程序,我想设置EditText,以便当用户输入要转换的数字时,一旦它增加3个数字,就应该实时自动添加一千个分隔符(,)....千万,百万,十亿等,当删除到4以下数字时,这个数字会恢复正常.有帮助吗?谢谢.
我正在制作一个计算器,我想确保用户能够输入"负十进制数"我单独看到xml文件中的选项,例如为了输入十进制数,EditText的inputType必须是numberDecimal,并且负数,inputType必须是"numberSigned",但我需要两者.如果我选择inputType作为"text",那么如果不是数字,用户可以输入抛出异常的任何内容.我不知道如何解决这个问题.
我们需要一个数字键盘EditText.键盘应具有基于设备所选语言环境的小数分隔符.我们通过将自定义设置为DigitsKeyListener来实现此目的EditText
public class NumericDigitsKeyListener extends DigitsKeyListener {
@Override
protected char[] getAcceptedChars() {
char[] acceptedCharacters = null;
acceptedCharacters = new char[] {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
new DecimalFormatSymbols(Locale.getDefaultLocale()).getDecimalSeparator()
return acceptedCharacters;
}
/**
* @see android.text.method.DigitsKeyListener#getInputType()
*/
public int getInputType() {
return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL;
}
Run Code Online (Sandbox Code Playgroud)
以上似乎适用于大多数设备,但对于三星Galaxy S-II,软键盘在键盘上没有逗号.设备的swype键盘显示逗号,但默认设置不显示.
我试过覆盖这里提到的DigitsKeyListener
有没有办法可以强制所有设备在数字键盘上使用逗号(适用时甚至是总是)?
是否可以EditText 在用户输入数据时自动插入字符?
也就是说,如果用户输入一个长号码,例如123456789012,这个号码是否可能在他在编辑文本框中输入时显示,但是每隔4个字符都有一个短划线?
因此,当您键入上面的数字时,您会看到它在EditText框中输入,但看起来像这样:1234-5678-9012.
目前我有一个应用程序,您可以在其中输入一个长号,然后按一个按钮,它会为您插入破折号,但我很好奇是否可以在键入时完成?
非常感谢任何帮助.
当尝试使用逗号(,)作为小数分隔符和inputType="numberDecimal"(或"number")时,我在横向模式的智能手机中遇到问题,逗号未显示.
我的布局:
当我打开键盘时:
我的EditText布局.
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:digits="0123456789,"
android:inputType="numberDecimal"
android:text="5,2" />
Run Code Online (Sandbox Code Playgroud)
我的默认值Locale是pt_BR,逗号是小数点分隔符.
在"平板电脑"是可以的,因为键盘不是全屏的.
如果我删除android:inputType="numberDecimal",也没关系,但不显示数字键盘.
有什么建议?
编辑#1
我找到的部分解决方案是添加android:imeOptions="flagNoFullscreen".
编辑#2
逗号被世界的一半采用.为什么在Android上这么难?:(
I set InputType.TYPE_NUMBER_FLAG_DECIMAL or InputType.TYPE_CLASS_NUMBER to my EditText and i want to use comma for decimal separator. So i set digits "0123456789.," to EditText.
editText.keyListener = DigitsKeyListener.getInstance("0123456789.,")
Run Code Online (Sandbox Code Playgroud)
I set a TextWatcher on EditText to handle user input. When i clicked comma(",") on Android emulator keyboard, it is working as expected but if i get build on my phone, which has Samsung Keyboard, comma key is disabled and doesnt work. I searched so much but i couldn't find a way.
Any …
我有一个EditText实现TextWatcher,但是Backspace键有问题。按住退格键时,前5个字符被一一清除,但是按住退格键时,转换为图像的后5个字符不能一一清除。
看图片:
MainActivity.java
public class MainActivity extends AppCompatActivity {
Spannable.Factory spannableFactory;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spannableFactory = Spannable.Factory
.getInstance();
final EditText editText = (EditText) findViewById(R.id.editText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
editText.removeTextChangedListener(this);
if (s.length() >= 5) {
editText.setText(getTextToIcon(getApplicationContext(), s));
}
if(count!=0){ // != key delete
if (s.length() - 1 > start) {
editText.setSelection(start + 1); …Run Code Online (Sandbox Code Playgroud)我一直在阅读关于这个问题的一些线索,有些没有得到解答,其他人(从2011年开始)解释了这是一个已知的错误.
这已经解决了吗?现在可以显示带有文化信息的软键盘吗?我想显示一个十进制键盘,显示","而不是小数点分隔符的"点".
提前致谢.