Как использовать & ldquo; android: inputMethod & rdquo; атрибут?

Это определенно запрещено. Я не вижу никакого чистого способа добиться этого. В чем проблема, которую вы хотите решить таким образом?

1
задан Dmitriy P 18 March 2019 в 18:13
поделиться

1 ответ

Я проверил в 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 это не то, что вы ищете.

0
ответ дан Xavier Rubio Jansana 18 March 2019 в 18:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: