Задать вопрос
@NickoliaDeGori
Front-end разработчик + Android - разработчик

Изменить размер текста item listview android?

Приветствую!

Есть проблема, требующая решения.

При создании приложения, я забираю часть текста с HTML и парсю его в JSON, предварительно очистив его от лишнего мусора. Потом вставляю json объекты списком в listview. Здесь все хорошо, и приятно.

Но, у меня в приложении есть опция увеличения и уменьшения текста в item listview. Она не работает корректно.

Вот как я изменяю размер:

int sizeText = 14;

private boolean setChangeTextSize(){
        int childCount = lv.getChildCount();

        float fSize = Float.parseFloat( sizeText+"");

        int i = 0;

        while (i < childCount){
            View v = lv.getChildAt(i);
            TextView tx = (TextView) v.findViewById(R.id.stings);
            tx.setTextSize(fSize);
            i++;
        }
        return false;
    }


Код обрабатывается правильно, но если проскролить список чуть вниз или вверх, размер текста начинает скакать(Здесь должна быть политическая шутка).

И вот вопрос, почему текст скачет?
  • Вопрос задан
  • 4149 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Используёте ArrayAdapter и забудете о проблемах. Иначе никак. Заодно и кастомизируете вид списка под свои нужды.
http://habrahabr.ru/post/133575/
Кастомная разметка для listview item с указанием размеров шрифта там - лучший вариант. Все динамические изменения внешнего вида реализуйте в методе getView вашего ArrayAdapter.
Скакать ничего не будет!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@IceJOKER
Web/Android developer
В getView в адаптере тоже устанавливайте размер.
Это потому что при скролле то что уходит за рамки потом воссоздается с помощью getView и тот TextView для которого вы устанавливали размер уходит в Нарнию )

Рекомендуют создать статический класс holder со статическими полями
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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