Android: измените LayoutParams of View, добавленный WindowManager - PullRequest
10 голосов
/ 20 февраля 2012

У меня есть оверлей View, управляемый WindowManager, как и в этот вопрос .

Вкратце, это выглядит так:

WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
my_view_layout_params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
       WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
       PixelFormat.TRANSLUCENT);

wm.addView(my_view, my_view_layout_params);

Этоработает, но если мне нужно изменить параметры макета, мне нужно удалить View и добавить его снова, вот так:

wm.removeView(my_view);
wm.addView(my_view, my_view_layout_params);

Это выглядит не очень красиво.Я пытался сделать my_view.setLayoutParams(my_view_layout_params), но, к сожалению, это не работает.Как я могу это сделать?

Ответы [ 2 ]

15 голосов
/ 20 февраля 2012

WindowManager имеет член updateViewLayout() ... конечно, это именно то, что вы хотите?

windowManager.updateViewLayout(my_view, my_view_layout_params);
4 голосов
/ 18 декабря 2013

Вы можете использовать это:

wm.updateViewLayout(my_view,my_view_layout_params);
...