Повторение фона с лимитом

1

У меня есть ListView. Я хотел бы заполнить каждую строку ListView фоном слева направо на x%...

Итак, я хочу:

  • Пункт - цвет фона 50%
  • Пункт - 20% фона окрашено
  • Пункт - 90% фона окрашено

Возможно ли это?

Спасибо за ответ!

Теги:
background

2 ответа

0
Лучший ответ

Насколько я знаю, это невозможно из коробки. Но я думаю, что вы можете архивировать с небольшим трюком.

Вы должны определить настраиваемый вид для строк. Этот вид имеет RelativeLayout в качестве корневого элемента, на котором вы можете установить цвет фона, который вы хотите использовать.

Затем вы добавляете еще один элемент вида в корневой элемент, который покрывает часть корневого элемента. Цвет фона этого элемента должен быть черным и должен быть выровнен вправо. RelativeLayout предоставляет много атрибутов, которые вы можете использовать для упорядочивания элементов.

Кроме того, вам нужно написать пользовательский адаптер, который обрабатывает создание отдельных элементов списка. Когда вы переопределяете метод getView(), где элементы представления для каждой отдельной строки создаются и накачиваются в ListView, вы вычисляете и устанавливаете ширину "обложка" -элемента таким образом, что он покрывает часть корневого элемента.

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

Здесь вы найдете короткое руководство о том, как реализовать пользовательский адаптер с настраиваемым представлением для элементов списка.

  • 0
    Я попробовал это ... Мне удалось сделать что-то подобное. Но что меня беспокоит, так это то, что я не могу установить проценты к ширине макета ... Любое решение?
  • 0
    Нет, я думаю, что вы должны сделать расчет самостоятельно. Когда я переосмысливаю вашу проблему, LinearLayout может быть лучшим решением для вас. Он предоставляет атрибут под названием «вес». С помощью этого атрибута вы можете определить соотношение размеров между элементами в LinearLayout. Итак, если у вас есть два элемента и для первого элемента установлен вес 1, а для второго - 2, то первый займет 1/3, а второй 2/3 доступного пространства. Не должно быть трудно рассчитать% к такому отношению. Но помните, чтобы установить ширину обоих элементов на 0, иначе это не будет работать.
Показать ещё 3 комментария
0

Это возможно по понятию пользовательских макетов. Это хорошая статья, чтобы узнать больше. Кроме того, я думаю, вам нужно пройти учебник по NotePad на официальном сайте Android.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню