Я использую пользовательский вид для рисования слайдера (с двумя ручками).
Пользовательское представление расширяет ConstraintLayout, я устанавливаю setWillNotDraw () в конструкторе, и все работает нормально - пока фрагмент, содержащий пользовательское представление, не остановится и не запустится снова.Начиная с этого момента, метод onDraw больше не выполняется после вызова invalidate ().Во время отладки я проверил флажок willNotDraw-Flag, и он по-прежнему имеет значение false.
- Я использую kotlinx
- Я вызываю setWillNotDraw (false) в блоке инициализации
- Я проверил, если созданный фрагмент создается дважды, но все выглядит вполне нормально.
- Я заверил, что invalidate () вызван.
- Я заверил, что willNotDraw () имеет значение false.
- Пользовательский вид добавляется к фрагменту вlayout.xml
onCreate
, onCreateView
, onViewCreated
фрагмента вызывается только один раз
блок инициализации в пользовательском представлении:
init {
View.inflate(context, R.layout.layout_slider, this)
setWillNotDraw(false)
}
Функция onDraw в пользовательском представлении:
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
Timber.d("onDraw")
}
После остановки и запуска содержащего фрагмента onDraw
больше не выводится, а все остальное работает нормально.