Первого раза плаката нового для Android, и я, кажется, ударил заграждение по этой проблеме:Изменение Просмотр свойств после OnCreate()
Я создаю динамический макет, состоящий из нескольких одинаковых «составных» объектов (это в основном «плавающие» LinearLayouts, каждый из которых содержит значок (ImageView) и подпись (TextView)). Координаты (x, y) каждого LinearLayout могут быть изменены в зависимости от действий пользователя и требуют точного размещения (т. Е. Не могут использовать RelativeLayout и т. Д.), Поэтому я размещаю их внутри AbsoluteLayout.
Во время onCreate() я добавляю каждый из этих объектов в виде дочернего элемента. Просмотр внутри объекта AbsoluteLayout, а затем установка (x, y) вручную. Никаких проблем до сих пор, отлично работает, первоначальный макет идеален.
Проблема:
После первоначального OnCreate(), я не могу получить (х, у) позиции этих объектов, чтобы изменить на экране. Я могу обновить их layoutParams, но экранная компоновка (внутри AbsoluteLayout) никогда не обновляется. Я пробовал forceLayout(), invalidate(), requestLayout(), ни одна из них не работает.
Есть ли проблема с моим базовым подходом здесь, или есть что-то, что я просто пропустил?
Я собираюсь перейти на SurfaceView и просто сделать рендеринг трудным путем, но мой код работает на 99% отлично, и я не хочу его менять, если мне это не нужно. Единственная проблема заключается в том, что диспетчер компоновки просто отказывается регистрировать изменения позиции для моих дочерних объектов.
Помогите, что я делаю неправильно?
Я запутался здесь, как я думал, что UI жили в главном потоке (той же самой, что называется OnCreate()). Разве это не так? Я еще не создал никаких дополнительных потоков в моем приложении. – dreambig
Вы правы, пользовательский интерфейс является частью основной темы. Он будет работать до тех пор, пока приложение не будет убито. Но когда вы пытаетесь обновить пользовательский интерфейс из другого места, у вас может не получиться доступ. Обычно я заметил, что он терпит неудачу, когда я жду некоторых событий. – Vinay
Обновление: я переместил все в пользовательский объект SurfaceView, и он работает намного лучше. Следующий учебник был отличным стартовым местом для меня: http://www.droidnova.com/playing-with-graphics-in-android-part-i,147.html – dreambig