本文介绍了Android:更改 WindowManager 添加的 View 的 LayoutParams的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有由 WindowManager 管理的叠加 View,就像在 this问题.

I have overlay View managed by WindowManager, just like in this question.

简而言之,它看起来像这样:

Briefly, it looks like this:

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 并再次添加它,如下所示:

It works, but if i need to change layout params, i need to remove View and add it again, like that:

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

看起来不是很漂亮.我试图做 my_view.setLayoutParams(my_view_layout_params),但不幸的是它不起作用.我该怎么做?

It looks not very beautiful. I tried to do my_view.setLayoutParams(my_view_layout_params), but it does not work unfortunately. How can i do it?

推荐答案

WindowManager 有一个 updateViewLayout() 成员...确定这正是您想要的吗?

WindowManager has an updateViewLayout() member... surely that's exactly what you want?

windowManager.updateViewLayout(my_view, my_view_layout_params);

这篇关于Android:更改 WindowManager 添加的 View 的 LayoutParams的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-13 09:14