this questionのように、WindowManager
によって管理されるオーバーレイView
があります。アンドロイド:ビューのLayoutParamsを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);
それは動作しますが、私は、レイアウトのparamsを変更する必要がある場合、私はビューを削除し、そのように、それを再度追加する必要があります。
wm.removeView(my_view);
wm.addView(my_view, my_view_layout_params);
あまり美しくないように見えます。私はmy_view.setLayoutParams(my_view_layout_params)
をしようとしましたが、残念なことに動作しません。どうすればいいですか?
あなたがview.getLayoutParamsを行うことはできませんが()、)layoutparams返されたオブジェクトを更新し、view.requestLayout(呼び出し? –
ルーベン、返信いただきありがとうございますが、残念ながらそれは動作しません。私は 'view.requestLayoutParams()'を行い、返されたLayoutParamsの '重力'を変更し、 'view.requestLayout()'を実行します。 –
WindowManagerはupdateViewLayout()メンバを持っています...確かにそれはあなたが望むものですか? –