java - 如何在edittext上创建特定的输入类型?可接受输入罗马数字 M D C X V I

标签 java android input android-edittext

我已经扩展了 edittext 类,如何创建自定义输入类型来仅接受此字符(M、C、D、X、V、I)?这是我扩展 EditText 的类

import android.content.Context;
import android.util.AttributeSet;
import android.widget.EditText;

public class DecimalEditText extends EditText{

    public DecimalEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub


    }
    public int getArabic(String roman){
        ConversioneTest ca = new ConversioneTest();
        int i = ca.convertToDecimal(roman);
        return i;

    }

}

最佳答案

您需要实现 InputFilter将输入限制为可接受的字符并将其分配给 EditText。在第一次迭代中,这非常简单。看看source codeLoginFilter.UsernameFilterGeneric 为例。您将在几分钟内完成此设置。

如果这就是您所需要的,那就太好了,就到此为止吧!不幸的是,这可能就是您所需要的。罗马数字有一些语法规则,例如XXCI是(100-20)+1=81,但IXXC不是100-(20-1)=81。如果你想覆盖这一点,那么 InputFilter 就太粗糙了。您仍将使用 InputFilter 进行初始过滤,但必须实现 TextWatcher最重要的是处理高级输入验证。 PhoneNumberFormattingTextWatcher ( source ) 为您提供了一些有关如何执行此操作的线索。这比 InputFilter 的工作量要多得多,因为您必须处理各种奇怪的多字符输入,例如剪贴板粘贴到替换选择。

关于java - 如何在edittext上创建特定的输入类型?可接受输入罗马数字 M D C X V I,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277657/

相关文章:

java - 如何使用 Aspose Java jar 裁剪 PDF

java - Quartz 和 Spring 的 NullPointerException

java - 如何测试删除链表中的元素?

android - 识别使用缺少 AttributeSet 的 View 构造函数时的错误

forms - 输入框中占位符旁边的红色 Asterisk

java - 在 `Collection <MyObject>` 内部和外部 `MyObject` 类之间进行选择 [Java]

android - RxJava2如何分离可观察发射器的不同实现

android - 如何在 Android 的不同应用程序中使用 Broadcast Receiver?

string - 在 smlnj 中,您如何将 "string option"转换为 "string"?

Android:EditText 输入验证