Как копировать android:editable = “ложь” в коде?

Используя ваше определение дельты, позвольте n = 1/(1 + delta) (или delta/(1 + delta)), и все будет так, как вы описали.

42
задан Nikhil 30 June 2012 в 11:28
поделиться

4 ответа

Я думаю, что InputFilter , который отклоняет все изменения, является хорошим решением:

editText.setFilters(new InputFilter[] {
    new InputFilter() {
        public CharSequence filter(CharSequence src, int start,
            int end, Spanned dst, int dstart, int dend) {
            return src.length() < 1 ? dst.subSequence(dstart, dend) : "";
        }
    }
});

Изменить: dlazar предложил (ниже) изменить return в dst.subSequence (dstart, dend) для преодоления поведения, которое удаляет слова.

13
ответ дан 26 November 2019 в 23:25
поделиться

Я не вижу связанный метод для того атрибута в классе EditText. Однако существуют другие подобные вещи, Вы могли использовать такой в качестве android:focus/setFocusable(boolean) или создать другой TextView чей android:editable="false" и использование setVisiblilty() для переключения между доступным для редактирования и не доступными для редактирования представлениями. Если Вы будете использовать View.GONE, то пользователь никогда не будет знать, что существует два EditTexts.

, Если Ваше ощущение себя, амбициозное, Вы могли бы, вероятно, сделать что-то с EditText onTextChanged, слушатель как наличие его реагирует с setText.

3
ответ дан Will 26 November 2019 в 23:25
поделиться

Вы попробовали setText (java.lang. CharSequence, android.widget. TextView. BufferType) ? Это описано как:

Наборы текст, который должен отобразить этот TextView (см. setText (CharSequence)) и также устанавливает, хранится ли он в буфере styleable/spannable и является ли это доступным для редактирования .

(шахта акцента)

3
ответ дан Philipp Reichart 26 November 2019 в 23:25
поделиться

[Размещение нового ответа, поскольку я не могу комментировать ответ Джозефа.]

Входной фильтр работает нормально , но он имеет тонкую ошибку в этом: набрав над выбором, удалит весь текст.

Например, скажем, у вас есть текст «Фу» в Edittext . Если вы выберете все это (например, дважды щелкнув его) и введите «A» , текст исчезнет. Это связано с тем, что вход ввода будет называться:

filter("a", 0, 1, "foo", 0, 3);

предлагаемый входной фильтр вернет пустую строку в этом случае (поскольку SRC.Length () <1 - это false ), который объясняет отсутствующий текст.

Решением является просто возвращение DST.субовут (DStart, Dend) в функции фильтра. Это будет работать нормально даже для делеций.

3
ответ дан 26 November 2019 в 23:25
поделиться
Другие вопросы по тегам:

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