2

EditText の自動大文字化、自動修正、またはパスワード フィールド (箇条書きを表示) をプログラムで有効または無効にしたいと考えています。これは XML からではないことを意味します

また、 TextWatcherソリューションを避け、 InputFilterまたはその他のソリューションに重点を置きたいと考えています。

EditText を Editable として操作すると、InputFilter を添付できますが、これらをプログラムで動作させることができませんでした。また、setAllCaps などの EditText メソッド、実際には何もしませんでした。これは、自動修正にも当てはまります。これは私が試みた自動修正です (私がどこにいるのか、および私の思考プロセスの一部を示すため):

/** SpellCheck filter for auto-correcting words. */
class SpellCheckFilter implements InputFilter {

    public String word;

    public SpellCheckFilter()
    {
        word = " ";
    }

    //FIXME not returning corrected word. Try adjusting start/end values,
    //what range does this return?
    @Override
    public CharSequence filter(CharSequence source, int start, int end,
            Spanned dest, int dstart, int dend) {
        word += source;
        Log.i("SpellCheckFilter", "source=\"" + source + "\";  word=\"" + word + "\"");
        if (source.toString().endsWith(" "))
        {
            word = word.replace(" ", "");
            String correction = AutoText.get(word, 0, word.length()-1, view);
            Log.i("TextEditor", "Corrected word=" + (correction == null ? word : correction));
            word = " ";
            return correction;
        }
        return null;
    }

}

InputFilter.AllCapsを使用すると、ほぼ機能する自動大文字化メソッドを取得できましたが、最初の文字は自動大文字化されませんでした。

4

1 に答える 1