BackgroundColorSpan с дополнительным вертикальным отступом

В моем приложении есть что-то похожее по внешнему виду на ярлыки в пользовательском интерфейсе приложения GMail. Для тех, кто не знает, они выглядят так (ярлыки - это такие разноцветные полоски): Gmail screenshot

Для достижения похожего эффекта я использую девятипатчевые drawables - для каждой метки я создаю TextView и назначаю ему drawable. Это простое решение, но мне оно не нравится. Оно не элегантно, довольно медленно, как показывает профайлер, и я просто не думаю, что это правильный способ сделать это.

Я изменил дизайн пользовательского интерфейса, чтобы сделать его более "ICS-y", поэтому я убрал закругленные углы с ярлыков. И я начал думать, чем можно заменить 9-патчевое решение. Самое очевидное - использовать BackgroundColorSpan. Но у него есть один небольшой недостаток. Я хочу, чтобы у моих меток была некоторая подложка. С drawables этого легко добиться. С диапазонами это сложнее. Чтобы сделать горизонтальную прокладку, я могу просто добавить пробелы в начале и в конце строки. Но как сделать вертикальные отступы больше? Чтобы прояснить ситуацию, вот скриншот метки с BackgroundColorSpan:

enter image description here

Я хочу сделать цветные части над и под текстом более крупными. Я думаю, что мне нужно использовать какой-то MetricAffectingSpan, но я не смог понять какой. Или, может быть, мне следует написать свой собственный? Или, наконец, может быть spans просто не в состоянии удовлетворить мои потребности, и я должен остаться с изображениями или создать холст и "вручную" нарисовать все, как в приложении GMail?

7
задан user1234567 16 December 2011 в 15:50
поделиться