Установить альфа в RecyclerView, но не выбранный дочерний элемент (Kotlin) - PullRequest
0 голосов
/ 28 января 2020

Я ищу способ установить альфа для всех элементов RecyclerView без итерации по элементам.

По сути, я могу установить альфу всего переработчика, и все дети наследуют эту альфа, но когда я обновляю альфа выбранного дочернего элемента, он все равно наследует значение от своего родителя, вместо обновления своего собственного альфа-значения. Все это должно происходить при нажатии элемента, который имеет следующий clickListener.

// it is the view on which the listener is called that belongs to the recycler
private val click = View.OnClickListener {
   recycler.alpha = 0.2f
   it.alpha = 1f
}

Я проверил, что элемент выбран правильно и что вызывается clickListener. Кажется, проблема в том, что альфа наследуется от родительского ViewGroup, но в официальных документах я не могу найти ничего о невозможности изменить унаследованное альфа-значение у потомка view.

Чего мне не хватает? Если установка альфа родительского элемента ViewGroup является no- go, есть ли способ избежать перебора всех элементов и установки значения альфа для каждого из них?

1 Ответ

0 голосов
/ 29 января 2020

Это не наследуется - дети рисуются как часть родителя. Таким образом, благодаря тому, что весь родитель имеет эту альфу, дети притягиваются этой альфой Установка альфа на дочернем элементе на 0.2f сделает этого дочернего элемента даже более прозрачным.

Лучше всего, вероятно, правильно установить альфу в методе onBindViewHolder вашего подкласса RecyclerView.Adapter. и измените альфа с помощью изменений в данных поддержки и notify... методах. Попытка изменить дочерние представления RecyclerView вне адаптера порождает проблемы, потому что RecyclerView не будет знать о них, и может что-то изменить, добавить другие представления и т. Д. c.

...