FrameLayout и setLayoutParams запрещают мой просмотр - PullRequest
2 голосов
/ 20 июля 2011

У меня странное поведение с реализацией Canvas, которую я имею.

Я делаю простой Canvas, рисую на нем что-то и все нормально.Но затем я помещаю Button над этим View (в FrameLayout), например:

FrameLayout frameLayout = new FrameLayout(this);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(10, 10, 10, 0);
button.setLayoutParams(layoutParams);

Когда вызывается setLayoutParams, весь View перерисовывается / становится недействительным.Я не понимаю почему, но тогда у меня проблемы из-за этого.Это не проблема для вызова в первый раз, но представление становится недействительным все время, когда вызывается setLayoutParams.Это вызывает некоторые проблемы позже.

Может быть, кто-то подскажет мне, как этого избежать?

1 Ответ

0 голосов
/ 20 июля 2011

Если вы пытаетесь переместить кнопку, вы должны изменить свой код на это:

MarginLayoutParams params = (MarginLayoutParams)button.getLayoutParams();
params.setMargins(10, 10, 10, 0);
button.setLayoutParams(params);

Если вы пытаетесь переместить макет фрейма, измените его на:

FrameLayout frameLayout = new FrameLayout(this);
MarginLayoutParams layoutParams = (MarginLayoutParams)frameLayout.getLayoutParams();
layoutParams.setMargins(10, 10, 10, 0);
frameLayout.setLayoutParams(layoutParams);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...