द्वारा जोड़े गए व्यू के लेआउट पैराम्स को बदलें की तरह 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)
करने की कोशिश की, लेकिन यह दुर्भाग्य से काम नहीं करता है। मैं यह कैसे कर सकता हूं?
आप view.getLayoutParams() नहीं कर सकते, लौटे layoutparams वस्तु को अद्यतन, और फिर फोन view.requestLayout() ? –
रूबेन, उत्तर के लिए धन्यवाद, लेकिन दुर्भाग्यवश यह काम नहीं करता है। मैं 'view.getLayoutParams()' करता हूं, फिर मैं वापस लेआउटपैम के 'गुरुत्वाकर्षण' को बदलता हूं, 'view.requestLayout() ', और कुछ भी नहीं बदला। –
WindowManager में एक अद्यतनViewLayout() सदस्य है ... निश्चित रूप से यह वही है जो आप चाहते हैं? –