Нет курсора в тексте редактирования под сотовой структурой - PullRequest
6 голосов
/ 30 апреля 2011

У меня есть приложение, которое использует внутренний IME (это означает, что IME это просто код в приложении, а не истинный IME).Я использую эту панель для ввода / редактирования текста редактирования.Все отлично работает до Froyo (я не тестировал под Gingerbread).Однако в Honeycomb я могу вводить текст и редактировать его, но курсор или выделение текста не отображаются!Кто-нибудь знает, как обойти это?Я бы предпочел не раскладывать свой код в специальной версии Honeycomb только для того, чтобы исправить эту проблему.

Я явно установил для элемента xml cursorVisible значение true, а затем установил для него значение true с setCursorVisible в коде, но этоничем не помог.

Спасибо!

Ответы [ 2 ]

7 голосов
/ 15 марта 2012

Добавьте эти атрибуты в ваш EditText, чтобы сделать мигающий курсор черным:

android:textColor="#000000"
android:textCursorDrawable="@null"

Это необходимо, если вы используете тему Holo. От: https://stackoverflow.com/a/9165217/1267112

0 голосов
/ 31 декабря 2014

Вы можете попробовать фрагмент кода ниже.

public static void setCursorVisible(EditText editText, Context context) {
    editText.setCursorVisible(true);
    // sdk
    // http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
    if (android.os.Build.VERSION.SDK_INT >= 12) {// Android 3.1.x  API12
                                                    // HONEYCOMB_MR1
        String filedNameString = "mCursorDrawableRes";
        // mCursorDrawableRes
        Class<? extends EditText> editTextClass = editText.getClass();
        Class<? extends TextView> textViewClass = null;
        if (editTextClass != null) {
            textViewClass = (Class<? extends TextView>) editTextClass
                    .getSuperclass();
        }
        if (textViewClass != null) {
            Field mCursorDrawableField = null;
            try {
                mCursorDrawableField = textViewClass
                        .getDeclaredField(filedNameString);
            } catch (NoSuchFieldException e) {
                // TODO Auto-generated catch block
                Log.i(TAG, "NoSuchFieldException");
                e.printStackTrace();
            }
            if (mCursorDrawableField != null) {
                mCursorDrawableField.setAccessible(true);
                try {
                    mCursorDrawableField.set(editText, 0);

                } catch (IllegalArgumentException e) {
                    Log.i(TAG, "IllegalArgumentException");
                    e.printStackTrace();
                } catch (NotFoundException e) {
                    Log.i(TAG, "NotFoundException");
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    Log.i(TAG, "IllegalAccessException");
                    e.printStackTrace();
                }
            }

        }
    }
...