#android #android-layout #android-xml
#Android #android-макет #android-xml
Вопрос:
У меня есть отдельный класс, Answer
который расширяется ImageView
. Этот объект программно добавляется в представление контейнера, а затем вызывается метод инициализации положения в onWindowFocusChanged()
— этот метод устанавливает правильные поля и параметры макета и включает видимость. Затем я пытаюсь получить начальную позицию X ответа, вызвав getLeft()
. Независимо от того, вызвано ли это из класса ответов this.getLeft()
или из основного действия answer_object1.getLeft()
, оно все равно возвращает ноль.
Почему это?
Если я добавлю просмотр изображения через XML и вызову ‘getLeft()’ в onWindowFocusChanged()
, это вернет правильное значение.
Ответ №1:
getLeft()
вернет вам фактическое значение только после завершения шага компоновки и onLayout
вашего Answer
вызова. Итак, чтобы записать начальную позицию вашего представления, лучше сделать это в onLayout
.
Теперь, говоря о onWindowFocusChanged()
— документация не дает никаких обещаний относительно того, будет ли этот метод вызван до onLayout
или после, поэтому это не лучшее место для записи начальной позиции вашего представления.