Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Serbis
17 / 17 / 2
Регистрация: 13.07.2012
Сообщений: 151
1

Быстродействие EditText при работе с html

18.11.2015, 17:52. Просмотров 276. Ответов 4
Метки нет (Все метки)

Есть EditText, в него загружается текст с html разметкой. Проблема в том, что он страшно тупит при попытке внести в него любые изменения. При добавление или удаление буквы на эмуляторе в режиме kvm в принципе нормально. А вот на слабеньком физическом Explay Atom телефон может задуматься чуть ли не на целую секунду. При этом при включении весьма не тривиального функционала (токенизация текста на лету) скорость работы не меняется вообще никак. Я не могу понять что может так тормозить, есть у кого идеи, может есть у EditText какая особая настройка для этого?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2015, 17:52
Ответы с готовыми решениями:

EditText смещается вниз при вводе текста, который занимает объём больше, чем EditText
EditText сещается вниз при вводе текста который занимает обём больше чем...

Почему в EditText не работает html тэг <strike>?
Добрый вечер, Почему не работает конструкция: Spanned s=...

Ввод в один EditText и авто-вычисление в двух других EditText
Всем привет. Есть три поля EditText,виртуальные клавиатуры у всех...

Динамическое создание edittext и обработка данных из edittext
Здравствуйте, мне нужна помощь, у меня есть таблица, где динамически создаются...

EditText Замена символа при вводе
Всем привет! Помогите реализовать замену символа ' ' на '_' при вводе. ...

4
Pablito
2764 / 2195 / 742
Регистрация: 12.05.2014
Сообщений: 7,702
Завершенные тесты: 1
18.11.2015, 18:03 2
а если так ?
Java
1
editText.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE);
0
Serbis
17 / 17 / 2
Регистрация: 13.07.2012
Сообщений: 151
18.11.2015, 19:39  [ТС] 3
Паблито, Я по видимому чего-то не понимаю. Я сейчас переделал формирование текста напрямую через Spannable стили. Вот код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
List<Spannable> list = new ArrayList<>();
        for (int i = 0; i < ta.size(); i++) {
            SpannableStringBuilder spannable = new SpannableStringBuilder();
            int offset = 0;
            for (int j = 0; j < ta.get(i).size(); j++) {
                Token tok = ta.get(i).get(j);
                spannable.append(tok.lexeme);
                spannable.setSpan(new ForegroundColorSpan(Color.parseColor("#" + tok.fontStyle.color)), offset, offset + tok.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
                spannable.setSpan(new RelativeSizeSpan(tok.fontStyle.size), offset, offset + tok.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
                spannable.setSpan(new TypefaceSpan(tok.fontStyle.font), offset, offset + tok.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
                if (tok.fontStyle.bold)
                    spannable.setSpan(new StyleSpan(Typeface.BOLD), offset, offset + tok.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
                if (tok.fontStyle.italic)
                    spannable.setSpan(new StyleSpan(Typeface.ITALIC), offset, offset + tok.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
                if (tok.fontStyle.underline)
                    spannable.setSpan(new UnderlineSpan(), offset, offset + tok.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
                offset += tok.length;
            }
            list.add(spannable);
        }
Устанавливает в EditText он вот таким образом

Java
1
setText(sp, BufferType.SPANNABLE);
Проблема в том, что этот код просто вешает телефон. При попытке ввести любой символ аппарат виснет а дальше окно завершения пивисшего потока. Вообще первый раз этой тема коснулся. Где у меня ошибка?
0
Pablito
18.11.2015, 19:46
  #4

Не по теме:

вот бы проверить это на одной готовой строке, ну так, что бы что-то скопировать себе в тестовый проект, создать там EditText и все, а то код выглядт угрожающе и х.з. что бы форматируется :)

0
Serbis
17 / 17 / 2
Регистрация: 13.07.2012
Сообщений: 151
19.11.2015, 11:06  [ТС] 5
В общем разобрался я в проблеме, наверное, во всяком случае пока новых глюков не было. Проблема была во флаге Spanned.SPAN_INCLUSIVE_INCLUSIVE . Вообще не совсем до конца понял что он делает, но его замена на EXCLUSIVE_EXCLUSIVE вернула скорость в норму.
0
19.11.2015, 11:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2015, 11:06

Добавить символ в EditText при нажатии кнопки
Программа при нажатии на Button, должна выводить в EditText символ, например...

Удаление текста при активации пользователем EditText
Доброго времени суток! у меня возник такой вопрос как сделать так чтобы при...

Прокрутка ListView в начало при обновлении EditText
Всем привет! Проблема следующая - имеется ListView с адаптером. Элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru