Изменение LayoutParams программно не имеет никакого эффекта в Android. Зачем? - PullRequest
4 голосов
/ 15 ноября 2009

У меня есть пользовательское представление, полученное из Button, которое я хочу разместить во время выполнения относительно другого представления. Поскольку я еще не знаю позицию этого другого вида, когда мое представление раздувается (поскольку компоновка еще не началась), я использую обработчик onSizeChanged, чтобы установить позицию моего представления относительно другого представления.

В onSizeChanged:

LayoutParams lp = new LayoutParams(this.getMeasuredWidth(), this.getMeasuredHeight());
lp.leftMargin = x;
lp.topMargin = y;
this.setLayoutParams(lp);

forceLayout();

Это, однако, не имеет никакого эффекта. Как получилось?

1 Ответ

4 голосов
/ 16 ноября 2009

Некоторые вещи для рассмотрения:

  1. Вы уверены, что этот код выполняется?
  2. Рассматривали ли вы пользовательский интерфейс в hierarchyviewer, чтобы увидеть, установлены ли поля, но они просто не имеют ожидаемого визуального эффекта?
  3. Вы уверены, что это не лучше обрабатывается только через RelativeLayout?
  4. Вы пытались изменить существующий LayoutParams вместо его замены?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...