В моем приложении у меня есть что-то похожее по внешнему виду на ярлыки в пользовательском интерфейсе приложения GMail. Для тех, кто может не знать, они выглядят так (эти ярлыки являются яркими): BackgroundColorSpan с дополнительным вертикальным отступом
Для достижения аналогичного эффекта я использую вытяжки с девятью патчами - для каждой метки я создаю TextView и назначаю для нее рисование , Это простое решение, но мне это не нравится. Это не изящно, это довольно медленно, как показано профилировщиком, и я просто не думаю, что это правильный способ сделать это.
Я изменил дизайн пользовательского интерфейса, чтобы сделать его более «ICS-y», поэтому я удалил закругленные углы с ярлыков. И я подумал, как заменить 9-патч-решение. Самое очевидное - использовать BackgroundColorSpan. Но у него есть один, маленький недостаток. Я хочу, чтобы на моих ярлыках было какое-то дополнение. С помощью чертежей это было легко достичь. С пролетами это сложнее. Чтобы сделать горизонтальное заполнение, я могу просто добавить пробелы в начале и в конце строки. Но как увеличить вертикальное заполнение? Для того, чтобы убрать вещи, это скриншот этикетки с BackgroundColorSpan:
Я хочу, чтобы сделать цветные детали выше и ниже текста больше. Я думаю, что я должен использовать какой-то MetricAffectingSpan, но я не мог понять, какой из них. Или, может быть, я должен написать свой собственный? Или, наконец, возможно, промежутки просто не в состоянии удовлетворить мои потребности, и я должен оставаться с изображениями или создавать холст и «вручную» рисовать все, как в приложении GMail?
+1 для форм, вы можете также сделать некоторые дополнительные вещи, как добавить тень и т.д., комбинируя форму. – Guillaume
Спасибо! Это определенно улучшение по сравнению с изображениями. Но Spans позволил мне отображать два или более ярлыка в одной форме TextView, исправить меня, если я ошибаюсь, не позволяйте мне делать это легко? – user1234567
Это правильно, так как вы можете использовать фигуры точно так же, как drawables - поскольку они не что иное, как drawables. – poitroae