Tôi có lớp phủ View
được quản lý bởi WindowManager
, giống như trong this question.Android: thay đổi LayoutParams of View được thêm bởi WindowManager
Tóm lại, nó trông như thế này:
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);
Nó hoạt động, nhưng nếu tôi cần phải thay đổi params bố trí, tôi cần phải loại bỏ Xem và thêm một lần nữa, như vậy:
wm.removeView(my_view);
wm.addView(my_view, my_view_layout_params);
Nó trông không đẹp lắm. Tôi đã cố gắng để làm my_view.setLayoutParams(my_view_layout_params)
, nhưng nó không hoạt động không may. Tôi làm nó như thế nào?
Bạn có thể không làm view.getLayoutParams(), cập nhật các đối tượng trở layoutparams, và sau đó gọi view.requestLayout() ? –
Reuben, cảm ơn bạn đã trả lời, nhưng tiếc là nó không hoạt động. tôi làm 'view.getLayoutParams()', sau đó tôi thay đổi 'gravity' của LayoutParams trả về, làm 'view.requestLayout()', và không có gì thay đổi. –
WindowManager có một thành viên updateViewLayout() ... chắc chắn đó là chính xác những gì bạn muốn? –