Фон
Google недавно опубликовал новую версию Android, в которой есть контактное приложение, которое выглядит следующим образом:
Эта проблема
Мне нужно имитировать такой список, но я не могу понять, как это сделать хорошо.
Он состоит из 3 основных компонентов:
липкие заголовки, которые остаются до тех пор, пока у верхнего контакта есть имя, начинающееся с этой буквы.
Круглые фотографии или кружок+буква (для контактов, у которых нет фотографий)
PagerTitleStrip, который имеет одинаковый интервал между элементами и пытается показать их все на экране (или разрешить прокрутку, если это необходимо).
Что я нашел
Существует множество сторонних библиотек, но они обрабатывают липкие заголовки, которые являются частью элементов самого listView. У них не заголовок слева, а сверху элементов.
Здесь левая сторона движется иначе, чем правая. Он может залипать, и если нет необходимости залипать (потому что в разделе один пункт, например) он прокручивается.
Я заметил, что для круглых фотографий я могу использовать новый (?) класс с именем RoundedBitmapDrawableFactory (который создает RoundedBitmapDrawable ). Это, вероятно, позволит мне красиво поместить фотографию в круглую форму. Однако это не сработает для писем (используется для контактов, у которых нет фотографии), но я думаю, что могу поместить textView сверху и установить цвет фона.
Кроме того, я заметил, что для того, чтобы правильно использовать RoundedBitmapDrawable (чтобы сделать его действительно круглым), я должен предоставить ему растровое изображение квадратного размера. В противном случае он будет иметь странную форму.
Я пытался использовать setTextSpacing< /strong>, чтобы минимизировать пространство между элементами, но, похоже, это не работает. Я также не смог найти способ стилизовать/настроить PagerTitleStrip так, чтобы он был похож на приложение для контактов.
Я также пытался использовать PagerTabStrip< /a> , но это тоже не помогло.
Вопрос
Как вы можете имитировать способ, которым Google реализовал этот экран?
Более конкретно:
Как сделать так, чтобы левая сторона вела себя как в приложении для контактов?
Это лучший способ реализовать круговое фото? Мне действительно нужно обрезать растровое изображение в квадрат, прежде чем использовать специальный drawable? Существуют ли какие-либо рекомендации по дизайну, какие цвета использовать? Есть ли более официальный способ использования ячейки кругового текста?
Как вы стилизуете PagerTitleStrip, чтобы он выглядел так же, как в приложении для контактов?
Гитхаб проект
РЕДАКТИРОВАТЬ: для № 1 и № 2 я сделал проект на Github, здесь< /а>. К сожалению, я также обнаружил важную ошибку, поэтому я также опубликовал о ней здесь .