В моем приложении для Android у меня есть действие, содержащее вложенные фрагменты, со свойством, имеющим свойство:
android:windowSoftInputMode="adjustResize"
Один из вложенных фрагментов содержит кнопку, которая при нажатии открывает фрагмент диалога непосредственно над тем местом, где расположена кнопка.
Когда эта кнопка нажата, когда программная клавиатура открыта, программная клавиатура автоматически закроется. Однако проблема, с которой я сталкиваюсь, заключается в том, что фрагмент диалога будет отрисован на основе положения кнопки до закрытия программной клавиатуры, а не после того, как программная клавиатура закрылась и перерисовка экрана была завершена.
То, что я сделал до сих пор:
- В событии onClick проверьте, открыта ли программная клавиатура - если это так, не открывайте фрагмент диалога сразу (вместо этого установите флаг)
- Фрагмент реализует View.OnLayoutChangeListener - когда вызывается onLayoutChange (), он проверяет флаг, чтобы увидеть, нужно ли открывать фрагмент диалога (если это так, он получает координаты кнопки в это время и открывает фрагмент диалога)
Я обнаружил, что при вызове onLayoutChange () экран перерисовывается не полностью - программная клавиатура закрылась, но кнопка не сдвинулась к нижней части экрана (т. Е. Есть пробел) где была клавиатура).
Поэтому мне нужно знать, когда экран закончил перерисовку, чтобы я мог убедиться, что кнопка находится в правильном положении до открытия фрагмента диалога.
Заранее спасибо.