Как сделать Recycler View реагирующим на SizeChange в MultiWindow / PIP? - PullRequest
1 голос
/ 07 марта 2019

Я делаю свое приложение совместимым с многооконным режимом и PIP (картинка в картинке).

У меня есть вид Recycler, который имеет тип GridLayout Holder, имеющий TextView и ImageView для каждого держателя вида.

Я даю размер моего Держателя в DP (просто для информации, т.е. он должен изменить размер в зависимости от нового размера окна) и по умолчанию recyclerView не обрабатывает вызов onSizeChanged(). Поэтому я создал customRecycler для обработки вызовов onSizeChanged(). Но я не уверен, как справиться с изменением размера recyclerView, так как при изменении размера я должен перерисовать все View-holder также (только догадываясь).

class CustomRecyclerView : RecyclerView {

    constructor(context: Context) : super(context)
    constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)

    override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
        super.onSizeChanged(w, h, oldw, oldh)
       /*
         post {
          requestLayout()  // forcing relayout but this also doesn't work with or without post.
       }
       */
    }
}

Если я запускаю приложение в полноэкранном режиме, а затем переключаюсь в режим PIP. тогда результат будет ниже.

Ожидаемый результат: Result 1

Проблема: enter image description here

Проблема, которую я понял, заключается в том, что представление Recycler при изменении размера не перерисовывает / не изменяет макет всего представления, так как размер держателя держателя не обновляется, когда размер окна приложения изменено.

Какой подход я должен использовать, чтобы настроить recyclerView в соответствии с новым размером экрана?

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