13

この質問のように、オーバーレイをで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);

動作しますが、レイアウト パラメータを変更する必要がある場合は、次のようにビューを削除して再度追加する必要があります。

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

見た目はあまり美しくありません。やってみましたがmy_view.setLayoutParams(my_view_layout_params)、残念ながらうまくいきません。どうすればできますか?

4

2 に答える 2

16

WindowManager にはupdateViewLayout()メンバーがあります...確かにそれはまさにあなたが望むものですか?

windowManager.updateViewLayout(my_view, my_view_layout_params);
于 2012-02-20T17:36:28.750 に答える
4

これを使用できます:

wm.updateViewLayout(my_view,my_view_layout_params);
于 2013-12-18T09:50:37.233 に答える