Перейти к содержанию
Fire Monkey от А до Я
  • 0

TListView и не прозрачная иконка при выделении пункта на Android


ENERGY

Вопрос

Меня это проблема преследует со времен VCL...

Подскажите как же ее решить...

FMX TListView - ItemAppearanceName = ImageListItem.   Лежит fmx TimageList, в настройках указано 16x16 и прорачный цвет clNone, добавил одну иконку 16x16 с прозрачностью. Если запустить под Windows 10  все ок. Если запустить под Android то при выделении (selected) вместо прозрачности белый цвет. В результате иконка некрасиво обрамлена в белом квадрате.. Иконку делал в Axiallis IconWorkShop, сохранил как ico,  Пробовал заливать белым вместо прозрачного, и затем ставить в TimageList белый как прозрачный - тоже самое...

Что же делать...

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Вобщем дело не в формате. Дело оказалось почему то в размере. 

Я взял иконку размером 32x32 (scale 1) и поставил в список, и вуаля - везде есть прозрачность. Но иконка того же размера в Android телефоне как и была 16x16 . Теперь вопрос - какой размер иконок должен быть? И почему размер иконок не меняется при отображении в LV, хотя размер иконки и TImageImage менялся (был 16x16 и иконка тоже, поставил 32x32 и иконку тоже кинул 32x32)

 

Спасибо.

Ссылка на комментарий
  • 0

Ага, понял как он работает. Значит TimageList 32x32. Для каждой картинки (ItemIndex ) в списке можно добавлять разные размеры, указав их из файлов. Затем система выбирает нужный размер, в зависимости от каких то критериев. 

К примеру, для картинки с индексом 0 я добавил 4 разные (в смысле не по размеру, в вообще - другие) иконки - одну 16x16 (scale 1), вторую 24x24 (1,5) и 3. 32x32 и 4. 48x48 для теста.

Под Windows показалась картинка 24x24.

Под Android на HTC телефоне тоже показалась картинка 24x24. 

А где можно почитать про стандарты - в каком случае какой размер подхватывается (видимо это зависит от платформы и dpi экрана) и вообще какие размеры по умолчанию должны присутствовать?

Изменено пользователем ENRGY
Ссылка на комментарий
  • 0

Спасибо за ответ. Я это читал, но как то не особо осветили они эту тему.

В общем по экспериментам - TimageList сам выбирает нужные размер, в зависимости от размера контрола, на основе метода TimageList.BestSize (fixme?)

К примеру если TListItem в ListView  имеет высоту 44, и  в списке картинок есть картинка < 44 - то будет показана она (например 32x32 ). Если там только картинка 16x16. то она будет увеличена или уменьшена, если картинка больше 44. Желательно сразу подбирать правильный размер (ну или рядом), т.к. если увеличить 16x16 в 32x32 она будет размыта. А если поставить слишком большие картинки (например 128 ), то список будет дольше грузиться и тратить ресурсы на не нужную работу... Конечно измененные картинки кэшируются (8 на текущий момент?)

Так что смотреть надо на минимальную и максимальную высоту, которые вы меняете от платформы к платформе.. Размер картинок меняется по запросу на лету, в остальное время они всегда лежат в оригинальном размере. При этом лучше не ставить кучу картинок разного размера, т.к. это все будет в оперативной памяти, даже те, что не используются на этой платформе. 

Изменено пользователем ENRGY
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...