Ho overlay View
gestito da WindowManager
, proprio come in this question.Android: modifica LayoutParam della vista aggiunto da WindowManager
In breve, sembra che questo:
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);
Funziona, ma se ho bisogno di cambiare params di layout, ho bisogno di rimuovere visualizzare e aggiungere di nuovo, così:
wm.removeView(my_view);
wm.addView(my_view, my_view_layout_params);
Non sembra molto bello. Ho provato a fare my_view.setLayoutParams(my_view_layout_params)
, ma purtroppo non funziona. Come posso farlo?
si può non fare view.getLayoutParams(), aggiornare l'oggetto restituito layoutparams, e quindi chiamare view.requestLayout() ? –
Reuben, grazie per la risposta, ma sfortunatamente non funziona. faccio 'view.getLayoutParams()', poi cambio 'gravity' di LayoutParams restituiti, faccio 'view.requestLayout()', e nulla è cambiato. –
WindowManager ha un membro updateViewLayout() ... sicuramente è esattamente quello che vuoi? –