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

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

Войти
Регистрация
Восстановить пароль
 
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Размер строк в списке - Программирование Android

18.03.2014, 21:21. Просмотров 691. Ответов 9
Метки нет (Все метки)

Пробую написать некое подобие зума строк в списке.
Написал свой адаптер. Задаю сложные (многокомпонентные) строки списка как xml.
Пытаюсь кнопкой увеличить и уменьшить размер шрифта в строках.

Когда увеличиваю шрифт, увеличивается и общий размер строки. Но когда шрифт уменьшаю, общий размер строки остается увеличеным! Как его уменьшить? Еть какая-то команда "пересчитать строку/строки"? Перепробовал десяток вариантов и пока не получилось... Кроме как задавать вручную общий размер строки не вижу решения, а это уже крайняя мера (слишком много нюансов прийдется учитывать).

Добавлено через 35 минут
еще заметил... при увеличении шрифта иногда увеличивается высота строки за счет переноса строк. при уменьшении на каком-то этапе 2 строки превращаются в одну. При этом корректно уменьшается высота строки. Но при дальнейшем уменьшении шрифта высота строки больше не уменьшается.

Добавлено через 2 часа 21 минуту
еще заметил... если шрифт строки увеличить, а потом уменьшить, строка прижимается к нижнему краю старой позиции шрифта даже если стоит выравнивание по центру или "android:gravity="top""
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2014, 21:21     Размер строк в списке
Посмотрите здесь:

Множественный выбор в списке - Программирование Android
Создал список в активити и в отдельном XML файле написал как будет выглядеть этот список с двумя текстовыми строками, но как добавить...

Виджет не появляется в списке виджетов - Программирование Android
Разбираю урок 117 проекта startandroid, делаю все как в уроке, но виджет не появляется в списке. Мне кажется, дело в том, что у меня в...

Вывод Elements в списке. Jsoup - Программирование Android
Здравствуйте! Я только начал изучать программирование под Android. Пробовал выводить список, по одному из уроков, и тем на этом сайте....

Виджет Android 4.1 не появляется в списке - Программирование Android
Добрый вечер, уважаемые форумчане. Учусь создавать приложения для андройда, добрался до виджетов. В уроке размещенном на сайте...

Как скрыть CheckBox в списке? - Программирование Android
Есть ListView, в нем item'ы с чекбоксами, нужно по кнопке включать режим мультивыбора, т.е. пока не нажмешь кнопку, чекбоксы в списке не...

На телефоне виджет не появляется в списке виджетов - Программирование Android
Добрый день! Сделал виджет - устанавливается и работает на планшете Asus Transformer Устанавливаю на телефон Fly IQ444 Quattro -...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ybrjk
26 / 26 / 2
Регистрация: 06.11.2010
Сообщений: 77
19.03.2014, 09:17     Размер строк в списке #2
Покажи код.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
19.03.2014, 12:51  [ТС]     Размер строк в списке #3
Весь код выкладывать не буду - его СЛИШКОМ много! Но примерно это выглядит так:

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// кусок адаптера
 
public int zoom = 1;
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = mInflater.inflate(R.id.my_item, null);
        }
 
        //задаю поля и размеры
        String str1;
        TextView tv1;
        ViewGroup.LayoutParams lp;
        tv1 = (TextView)item.v.findViewById(R.id.tv_1);
 
str1 = "item+_"+zoom;
// задатю текст и размер шрифта тоже из ZoomSize();
        lp = tv1.getLayoutParams();
        lp.height = ZoomSize();
        tv1.setLayoutParams(lp);
 
        return convertView;
    }
 
public int ZoomSize(); { //это примерно
if (zoom==1) return 10;
if (zoom==2) return 20;
if (zoom==3) return 30;
}
 
public int ZoomSet(newzoom); { //это примерно
zoom = newzoom;
notifyDataSetChanged();
}


Добавлено через 5 минут
Текст задаю примерно так:
tv1.setText(Html.fromHtml(str1));
tv1.setTextSize(ZoomSize());

конечно реальный код намного сложнее. это часть адаптера почти в 50 кб кода...
verylazy
Заблокирован
19.03.2014, 14:31     Размер строк в списке #4
Весь ответ писать не буду, его слишком много.
Где-то в коде ошибка.
Реальный ответ намного сложнее сложнее, там строк 50 будет, не меньше.
Ybrjk
26 / 26 / 2
Регистрация: 06.11.2010
Сообщений: 77
19.03.2014, 14:58     Размер строк в списке #5
посмотри в сторону метода notifyDataSetChanged()
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
19.03.2014, 16:03  [ТС]     Размер строк в списке #6
Цитата Сообщение от Ybrjk Посмотреть сообщение
notifyDataSetChanged()
Я этот метод полностью переписал. Но проблема явно не в этом.
Почти получалось когда вместо
if (convertView == null) {
convertView = mInflater.inflate(R.id.my_item, null);
}
вставлял
convertView = mInflater.inflate(R.id.my_item, null);
но... ОЧЕНЬ сильно мерцает после notifyDataSetChanged. Список как будто очищается а потом перезаполняется.

Поэтому хочу просто пересчитать размер лейаута с учетом нового шрифта! Особенно при его уменьшении! Подозреваю что для этого есть некая команда API, которую я просто еще не нашел...

Цитата Сообщение от verylazy Посмотреть сообщение
Весь ответ писать не буду, его слишком много.
Где-то в коде ошибка.
Реальный ответ намного сложнее сложнее, там строк 50 будет, не меньше.
Последнее время не встречаю от Вас дельных советов...
Вы действительно хотите чтобы я сюда выложил ВСЕ исходники моего проекта, над которыми я бьюсь уже больше полугода и которых же больше 1.5 мб КОДА написаного лично мной? Выложеных кусков кода вполне хватает что-бы обьяснить проблему. Мой клас адаптера использует минимум 3 потока для одной лишь скоростной отрисовки элементов из базы данных, свой рисованый скроллинг использующий мультитатч и подвижную инфо-панель по выделеному элементу. Даже Log.e() я заменил своим классом... Оригинальный проект Вы будете неделю читать...
verylazy
Заблокирован
19.03.2014, 16:14     Размер строк в списке #7
Я когда вижу (да да, я чувствую это, как ни странно это звучит) что человек думал над проблемой, то могу даже тестовый проект создать у себя и проверить что нужно.

Когда человек задает вопрос, и тут же, следом, комментирует что-то типа "вам это не надо", "это не интересно", "но проблема явно не в этом" желание сильно вникать пропадает.
Если человек уже знает что проблема "не в этом, а в том" то может стоит додумать самому? Это я не указываю что делать, мысль вслух просто.

Дельные советы я смогу раздавать когда что-то буду реально знать и понимать.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
19.03.2014, 16:27  [ТС]     Размер строк в списке #8
Ладно! Проблему упрощаю!
Обычный
XML
1
2
3
4
5
6
7
8
9
    <TextView
        android:id="@+id/tv_Text1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:background="#ff000044"
        android:textColor="#ff949fff"
        android:text="Application info"
    />
и две кнопки с двумя реакторами.

Java
1
2
3
4
5
6
7
8
9
10
    public int zoom1 = 10;
    public void bt_Zoom1_OnClick(View v) {
        zoom1 = zoom1 + 2;
        ((TextView)findViewById(R.id.tv_Text1)).setTextSize(zoom1);
    }
 
    public void bt_Zoom2_OnClick(View v) {
        zoom1 = zoom1 - 2;
        ((TextView)findViewById(R.id.tv_Text1)).setTextSize(zoom1);
    }
Увеличивает правильно. Но при уменьшении - высота tv_Text1 не меняется, уменьшается шрифт, текст остается прижатым к низу

Добавлено через 2 минуты
Цитата Сообщение от verylazy Посмотреть сообщение
"но проблема явно не в этом".
А для меня это значит что я уже проверил эту тему вдоль и поперек. Разобрал десятки коомбинаций в этом направлении и уверен что проблема в другой области или что изменения в этой не помогут...
verylazy
Заблокирован
19.03.2014, 16:51     Размер строк в списке #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
а если так:
Java
1
2
3
4
5
public void bt_Zoom2_OnClick(View v) {
        zoom1 = zoom1 - 2;
        ((TextView)findViewById(R.id.tv_Text1)).setTextSize(zoom1);
        ((TextView)findViewById(R.id.tv_Text1)).setText(getText(),TextView.BufferType.SPANNABLE);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2014, 18:32     Размер строк в списке
Еще ссылки по теме:

Повторение позиций в списке генерируемом адаптером - Программирование Android
Есть кастомный CityAutoCompleteAdapter - в нём метод public View getView(int position, View convertView, ViewGroup parent) { ...

Получить индекс элемента в кастомном списке - Программирование Android
Добрый день. У меня имеется кастмоный список, состоящий из двух и более элементов. Например, я кликнул по 2 элементу списка, длина которого...

Как сделать подзаголовки в списке listView - Программирование Android
Я допустим хочу в Списке ListView какие то элементы списка чтобы находились под одним подзаголовком, как мне это реализовать, чтобы вышло...

Ошибка когда ставлю галочку в списке - Программирование Android
Здравствуйте, вообщем в одной активити список, жму в этой активити кнопку добавить и перехожу на другую активити, там ввожу имя для списка...


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

Или воспользуйтесь поиском по форуму:
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
19.03.2014, 18:32  [ТС]     Размер строк в списке #10
Ура! Заработало! И в списке тоже! Правда еще не понял как... что делает этот параметр?

Чего я только не пробовал...
tv1.refreshDrawableState();
tv1.invalidate();
и вручную уменьшал размеры строк и пытался очищать поля перед заполнением...

знал что нехватает одной-двух команд для пересчета отрисовки... и сильно растерялся когда меня попросили выслать полный код для "понимания проблемы"... я его больше 10 минут вырезал из 3х классов-наследников... у меня в getView нет отрисовщика. Этим занимается отдельный поток определяемый в наследнике...
Yandex
Объявления
19.03.2014, 18:32     Размер строк в списке
Ответ Создать тему
Опции темы

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