View.FitSystemWindows(Rect) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Caution
deprecated
Called by the view hierarchy when the content insets for a window have changed, to allow it to adjust its content to fit within those windows.
[Android.Runtime.Register("fitSystemWindows", "(Landroid/graphics/Rect;)Z", "GetFitSystemWindows_Landroid_graphics_Rect_Handler")]
[System.Obsolete("deprecated")]
protected virtual bool FitSystemWindows (Android.Graphics.Rect? insets);
[<Android.Runtime.Register("fitSystemWindows", "(Landroid/graphics/Rect;)Z", "GetFitSystemWindows_Landroid_graphics_Rect_Handler")>]
[<System.Obsolete("deprecated")>]
abstract member FitSystemWindows : Android.Graphics.Rect -> bool
override this.FitSystemWindows : Android.Graphics.Rect -> bool
Parameters
- insets
- Rect
Current content insets of the window. Prior to
android.os.Build.VERSION_CODES#JELLY_BEAN
you must not modify
the insets or else you and Android will be unhappy.
Returns
true
if this view applied the insets and it should not
continue propagating further down the hierarchy, false
otherwise.
- Attributes
Remarks
Called by the view hierarchy when the content insets for a window have changed, to allow it to adjust its content to fit within those windows. The content insets tell you the space that the status bar, input method, and other system windows infringe on the application's window.
You do not normally need to deal with this function, since the default window decoration given to applications takes care of applying it to the content of the window. If you use #SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or #SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
this will not be the case, and your content can be placed under those system elements. You can then use this method within your view hierarchy if you have parts of your UI which you would like to ensure are not being covered.
The default implementation of this method simply applies the content insets to the view's padding, consuming that content (modifying the insets to be 0), and returning true. This behavior is off by default, but can be enabled through #setFitsSystemWindows(boolean)
.
This function's traversal down the hierarchy is depth-first. The same content insets object is propagated down the hierarchy, so any changes made to it will be seen by all following views (including potentially ones above in the hierarchy since this is a depth-first traversal). The first view that returns true will abort the entire traversal.
The default implementation works well for a situation where it is used with a container that covers the entire window, allowing it to apply the appropriate insets to its content on all edges. If you need a more complicated layout (such as two different views fitting system windows, one on the top of the window, and one on the bottom), you can override the method and handle the insets however you would like. Note that the insets provided by the framework are always relative to the far edges of the window, not accounting for the location of the called view within that window. (In fact when this method is called you do not yet know where the layout will place the view, as it is done before layout happens.)
Note: unlike many View methods, there is no dispatch phase to this call. If you are overriding it in a ViewGroup and want to allow the call to continue to your children, you must be sure to call the super implementation.
Here is a sample layout that makes use of fitting system windows to have controls for a video view placed inside of the window decorations that it hides and shows. This can be used with code like the second sample (video player) shown in #setSystemUiVisibility(int)
.
{
This member is deprecated. As of API 20 use #dispatchApplyWindowInsets(WindowInsets)
to apply insets to views. Views should override #onApplyWindowInsets(WindowInsets)
or use #setOnApplyWindowInsetsListener(android.view.View.OnApplyWindowInsetsListener)
to implement handling their own insets.
Java documentation for android.view.View.fitSystemWindows(android.graphics.Rect)
.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.