Это определенно запрещено. Я не вижу никакого чистого способа добиться этого. В чем проблема, которую вы хотите решить таким образом?
Я проверил в AOSP и в TextView вы можете ясно видеть, что значение атрибута не изменяется (это легко проследить, в строке 1034 атрибут выбирается) и позже используется в следующем фрагменте кода ):
if (inputMethod != null) {
Class<?> c;
try {
c = Class.forName(inputMethod.toString());
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
try {
createEditorIfNeeded();
mEditor.mKeyListener = (KeyListener) c.newInstance();
} catch (InstantiationException ex) {
throw new RuntimeException(ex);
} catch (IllegalAccessException ex) {
throw new RuntimeException(ex);
}
try {
mEditor.mInputType = inputType != EditorInfo.TYPE_NULL
? inputType
: mEditor.mKeyListener.getInputType();
} catch (IncompatibleClassChangeError e) {
mEditor.mInputType = EditorInfo.TYPE_CLASS_TEXT;
}
}
Итак, самое близкое, что мы можем обойти, это вызов TextView#setKeyListener()
(это в основном то, что этот фрагмент кода делает, обратите внимание на приведение после создания экземпляра класса, как только он загружен mEditor.mKeyListener = (KeyListener) c.newInstance();
). Это, как говорится, из моего ограниченного понимания этой темы, KeyListener
это не то, что вы ищете.