ちょっと必要になって、アルファベット小文字を大文字に、且つ全角カタカナをひらがなに変換するInputFilterを実装した。
public static class CustomFilter implements InputFilter { static final char HIRAGANA_SMALL_A = 0x3041; static final char HIRAGANA_DIGRAPH_YORI = 0x309F; static final char KATAKANA_SMALL_A = 0x30A1; static final char KATAKANA_NN = 0x30F3; static final char KATAKANA_PROLONGED = 0x30FC; public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { for (int i = start; i < end; i++) { char c = source.charAt(i); if (Character.isLowerCase(c) || c >= HIRAGANA_SMALL_A) { char[] v = new char[end - start]; TextUtils.getChars(source, start, end, v, 0); String s = convertKana(new String(v).toUpperCase()); if (source instanceof Spanned) { SpannableString sp = new SpannableString(s); TextUtils.copySpansFrom((Spanned) source, start, end, null, sp, 0); return sp; } else { return s; } } } return null; // keep original } public static String convertKana(String s) { StringBuffer sb = new StringBuffer(s); for (int i = 0; i < sb.length(); i++) { char c = sb.charAt(i); if (c >= KATAKANA_SMALL_A && c <= KATAKANA_NN) { sb.setCharAt(i, (char)(c - KATAKANA_SMALL_A + HIRAGANA_SMALL_A)); } else if (c > HIRAGANA_DIGRAPH_YORI && c != KATAKANA_PROLONGED) { sb.deleteCharAt(i--); } } return sb.toString(); } }