Android GridView рассчитывает цвет фона неравномерно - PullRequest
0 голосов
/ 22 февраля 2019

Каким будет хороший математический способ для вычисления следующей задачи в Kotlin для моего GridView?

Итак, в этом сеточном представлении фоновые шаблоны:

[Красный] [Синий] [Синий][Красный] [Красный] и т. Д. *

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

Как бы рассчитать это в адаптере в Kotlin?Мой код теперь выглядит следующим образом, но я не хочу избавляться от R.color. в классе:

    buttons.add(GridViewButton(R.drawable.ic_message, "Account", R.color.buttonRed,this))
    buttons.add(GridViewButton(R.drawable.ic_message, "Account", R.color.buttonBlue,this))
    buttons.add(GridViewButton(R.drawable.ic_message, "Account", R.color.buttonBlue,this))
    buttons.add(GridViewButton(R.drawable.ic_message, "Account", R.color.buttonRed,this))
    buttons.add(GridViewButton(R.drawable.ic_message, "Account", R.color.buttonRed,this))
    buttons.add(GridViewButton(R.drawable.ic_message, "Account", R.color.buttonBlue,this))

И

class GridViewButton (
    val icon: Int,
    val name: String,
    val color: Int,
    val listener: View.OnClickListener
)

enter image description here

1 Ответ

0 голосов
/ 22 февраля 2019

После некоторого разрушения мозга и с помощью комментатора я понял это:

when (position % 4) {
    0, 3 -> view?.layout_button?.setBackgroundColor(mContext.resources.getColor(R.color.buttonRed))
    1, 2 -> view?.layout_button?.setBackgroundColor(mContext.resources.getColor(R.color.buttonBlue))
}

Объяснение:

position всегда начинается с 0.

Итак, если мы напишем это для кнопок с 1 по 4.

0 % 4 == 0

1 % 4 == 1

2 % 4 == 2

3 % 4 == 3

Мы устанавливаем первое и последнее значение красного цвета.Второй и третий цвет синий.На 5-й кнопке она в основном будет такой же, как на 1-й кнопке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...