Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Serbis
7 / 7 / 2
Регистрация: 13.07.2012
Сообщений: 127
#1

Быстродействие EditText при работе с html - Программирование Android

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

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

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

Почему в EditText не работает html тэг <strike>? - Программирование Android
Добрый вечер, Почему не работает конструкция: Spanned s= Html.fromHtml(&quot;&lt;strike&gt;my test text&lt;/strike&gt;&quot;); ...

Ввод в один EditText и авто-вычисление в двух других EditText - Программирование Android
Всем привет. Есть три поля EditText,виртуальные клавиатуры у всех заблокированы,а ввод чисел в поле осуществляется с Button(ов). Вопрос...

EditText Замена символа при вводе - Программирование Android
Всем привет! Помогите реализовать замену символа ' ' на '_' при вводе. Пытался сделать с помощью InputFilter InputFilter...

Добавить символ в EditText при нажатии кнопки - Программирование Android
Программа при нажатии на Button, должна выводить в EditText символ, например нажимаем на Button ooo, и в EditText появляется буква 'k', но...

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

4
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
18.11.2015, 18:03 #2
а если так ?
Java
1
editText.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE);
0
Serbis
7 / 7 / 2
Регистрация: 13.07.2012
Сообщений: 127
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
7 / 7 / 2
Регистрация: 13.07.2012
Сообщений: 127
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
Привет! Вот еще темы с ответами:

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

Сохранить измененные значения EditText в ListView при прокрутке - Программирование Android
Добрый день, прошу помощи, т.к. уже долго и безрезультатно пытаюсь решить следующую задачу: Есть Листвью с названиями товаров ,...

Убрать softkeyboard и курсор при касании за пределами EditText? - Программирование Android
Всем добра! в EditText который находится в Toolbar задается курс валюты, после этого надо чтобы спряталась клавиатура и убрался фокус...

EditText отключение выплывающей клавиатуры при загрузки приложения - Программирование Android
подскажите как сделать) заранее спасибо


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

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

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