1

У меня есть пользовательский (подкласс) RelativeLayout, который используется в Fragment и ViewPager. Я использую следующий код, чтобы установить высоту для одного из представлений в этом макете, который предполагает, чтобы быть половины высоты макета:Android Viewpager и изменение ориентации

override fun onFinishInflate() { 
    super.onFinishInflate() 
    this.post { 
     coverView = findViewById(R.id.cover) 
     val layoutParams = coverView.layoutParams 
     layoutParams.height = this.height/2 
     coverView.layoutParams = layoutParams 
    } 
} 

Все, кажется, хорошо до поворота экрана. Высота представления не обновляется с новой ориентацией. Я попробовал onConfigurationChanged, чтобы обновить высоту, но, похоже, тоже не работает.

Должен ли я использовать другой подход для установки высоты? Что еще я могу сделать, чтобы установить правильную высоту при повороте экрана?

+0

Пожалуйста, добавьте код операции и код файла манифеста. – sumandas

ответ

0

Я бы постарался настроить мой код для использования weightsum с LinearLayout.

Согласно документам onFinishInflate() называется после вид и его дети были завышены.

Если вы хотите больше пользовательской обработки, переопределите onMeasure().

+0

Я не могу использовать линейную компоновку, потому что представления должны перемещаться с помощью сенсорного экрана. – mhshams

+0

onMeasure() then? Вы можете получить размеры родительского представления (RelativeLayout?) И использовать их для детей. – masp

+0

У меня должен быть пользовательский вид (подкласс), чтобы иметь возможность использовать OnMeasure. это правильно? – mhshams

Смежные вопросы