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



我已经扩展了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。在第一次迭代中,这真的很简单。看看LoginFilter.UsernameFilterGeneric的源代码为例。你几分钟就可以把它设置好。

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

最新更新