Android insets: рдЖрд╢рдВрдХрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдФрд░ Android Q рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдирд╛

Android Q, API рд╕реНрддрд░ 29 рдХреЗ рд╕рд╛рде Android рдХрд╛ рджрд╕рд╡рд╛рдВ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдЬ-рдЯреВ-рдПрдЬ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ, рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреВрд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рд╡реЗ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИрдВ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдпреВрдЖрдИ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдШрдЯрдХреЛрдВ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрдирд╕реЗрдЯреНрд╕ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореЛрдмрд╛рдЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдЗрдирд╕реЗрдЯ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рдЙрдирдореЗрдВ рдбрд░ рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдХреНрдпреВ рдореЗрдВ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрдирд╕реЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ: рд╡реЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рд╕реНрдХреНрд░реАрди рддрддреНрд╡ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рддрддреНрд╡ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рди рдХрд░реЗред Konstantin Tskhovrebov рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдЗрдирд╕реЗрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред


рдХреЛрдВрд╕реНрдЯреЗрдВрдЯрд┐рди рдЯреНрд╕рдХреЛрд╡реНрд░реЗрдмреЛрд╡ (terrakok) Redmadrobot рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред 10 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдиреБрднрд╡ рд╕рдВрдЪрд┐рдд рдХрд┐рдП рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрдЧрд╣ рдирд╣реАрдВ рдереА, рд╡реЗ рд╣рдореЗрд╢рд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдкрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдЕрдзреНрдпрдпрди рдФрд░ рд▓рдбрд╝рд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЗрдирд╕реЗрдЯреНрд╕ рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдПрдХ рд▓рдВрдмреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдЧрд╛ред рд╡рд╣ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдЙрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ рдЬрд┐рдирдореЗрдВ рдЗрдирд╕реЗрдЯ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреАрдмреЛрд░реНрдб рд╕реЗ рдбрд░рдирд╛ рдХреИрд╕реЗ рд░реЛрдХреЗрдВ, рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВ рдФрд░ рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВред

рдзреНрдпрд╛рди рджреЗрдВред рдпрд╣ рд▓реЗрдЦ рд╕реЗрдВрдЯ рдПрдкреНрд╕рдХреЙрдиреНрдл 2019 рдореЗрдВ рдХреЛрдВрд╕реНрдЯреЗрдВрдЯрд┐рди рдХреА рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ ред рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдЗрдирд╕реЗрдЯ рдкрд░ рдХрдИ рд▓реЗрдЦреЛрдВ рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░реЗрдВред

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп


рд░рдВрдЧ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреАред рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдбрд┐рдЬрд╛рдЗрдирд░ рдПрдХ рд░рдВрдЧ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдЦреАрдВрдЪрддрд╛ рд╣реИред рдпрд╣ рддрдм рдФрд░ рдлреИрд╢рдиреЗрдмрд▓ рд╣реЛ рдЧрдпрд╛ рдЬрдм Android 5 рдирдП рдордЯреАрд░рд┐рдпрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд╛рде рдЖрдпрд╛ред



рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдХреИрд╕реЗ рдкреЗрдВрдЯ рдХрд░реЗрдВ? рдкреНрд░рд╛рдердорд┐рдХ - рдЬреЛрдбрд╝ colorPrimaryDarkрдФрд░ рд░рдВрдЧ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рд╣реИред

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="colorPrimaryDark">@color/colorAccent</item>
    ...
</style>

рдкрд╛рдВрдЪрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдКрдкрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП (21 рдФрд░ рдКрдкрд░ рд╕реЗ рдПрдкреАрдЖрдИ), рдЖрдк рд╡рд┐рд╖рдп рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="android:statusBarColor">@color/colorAccent</item>
    ...
</style>

рдмрд╣реБ рд░рдВрдЧ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ ред рдХрднреА-рдХрднреА рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреНрд░реАрди рдкрд░ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧреЛрдВ рдореЗрдВ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред



рдпрд╣ рдареАрдХ рд╣реИ, рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред

рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХрд╛ рд╕реАрдзреЗ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд░рдВрдЧ рдмрджрд▓рдирд╛ рд╣реИ ред

override fun onCreateView(...): View {
    requireActivity().window.statusBarColor = requireContext().getColor(R.color.colorPrimary)
    ...
}

рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реАрди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ рддреЛ рд░рдВрдЧ рд╡рд╛рдкрд╕ рдмрджрд▓рдирд╛ рди рднреВрд▓реЗрдВред

рдкрд╛рд░рджрд░реНрд╢реА рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреАред рдпрд╣ рдХрдард┐рди рд╣реИред рдЕрдзрд┐рдХрддрд░, рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдкрд░ рд╣реЛрддреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рджреЗрдЦреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рд╣рдордиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">    
    ...
    <item name="android:windowTranslucentStatus">true</item>
    ...
</style>

рдпрд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдЪрд╛рд▓ рд╣реИ - рдЙрдЪреНрдЪрддрд░ рдЗрдВрдбреЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдЖрдЗрдХрди рдкрд░ рд╕реБрдкрд░рдЗрдореНрдкреЛрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдпрд╣ рдмрджрд╕реВрд░рдд рд╣реЛрдЧрд╛ред


рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред



рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╕реБрд▓рдЭрд╛рдпрд╛ рдЬрд╛рдП? рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рд╣рдо рди рдХреЗрд╡рд▓ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдХреЗ рд╕рд╛рде, рдмрд▓реНрдХрд┐ рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рднреА рдЗрдирд╕реЗрдЯ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред



рдХрд┐рд╕реА рдХреЛ рднреА рдмрд╛рдИрдВ рдУрд░ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рджрд╛рдИрдВ рдУрд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИред

<activity
    ...
    android:windowSoftInputMode="adjustResize">
    ...
</activity>

рдХреАрдмреЛрд░реНрдб рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЕрдм рдЖрдХрд╛рд░ рдмрджрд▓ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕рд░рд▓ рдФрд░ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдЪрд╛рд▓ рдордд рднреВрд▓рдирд╛ - рд╕рдм рдХреБрдЫ рдореЗрдВ рд▓рдкреЗрдЯреЛ ScrollViewред рдЕрдЪрд╛рдирдХ рдХреАрдмреЛрд░реНрдб рдкреВрд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрдЧрд╛ рдФрд░ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЫреЛрдЯреА рд╕реА рдкрдЯреНрдЯреА рд╣реЛрдЧреА?

рдХрдИ рдмрд╛рд░ рдЕрдзрд┐рдХ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╣рдо рдХреАрдмреЛрд░реНрдб рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рд▓реЗрдЖрдЙрдЯ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдпрдерд╛ рдмрдЯрди рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░реЗрдВ рдпрд╛ рд▓реЛрдЧреЛ рдЫрд┐рдкрд╛рдПрдВред



рд╣рдордиреЗ рдПрдХ рдХреАрдмреЛрд░реНрдб рдФрд░ рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдХреЗ рд╕рд╛рде рдЗрддрдиреА рд╕рд╛рд░реА рдмреИрд╕рд╛рдЦреА рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛, рдЕрдм рд╣рдореЗрдВ рд░реЛрдХрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред StackOverflow рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╕реБрдВрджрд░ рдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВред

boolean isOpened = false;

public void setListenerToRootView() {
    final View activityRootView = getWindow().getDecorView().findViewById(android.R.id.content);
    activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
    
            int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();      
            if (heightDiff > 100) { // 99% of the time the height diff will be due to a keyboard.       
                Toast.makeText(getApplicationContext(), "Gotcha!!! softKeyboardup", 0).show();

                if (isOpened == false) {
                   //Do two things, make the view top visible and the editText smaller
                }
                isOpened = true;
            } else if (isOpened == true) {
                Toast.makeText(getApplicationContext(), "softkeyborad Down!!!", 0).show();
                isOpened = false;
            }    
        }
    });
}

рдпрд╣ рднреА рдПрдХ рдХреБрдВрдЬреАрдкрдЯрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдЧрдгрдирд╛ рдХреАред рдХреЛрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд▓рдВрдмреЗ рд╕рдордп рддрдХред

рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХрдИ рдмреИрд╕рд╛рдЦреА рд╡рд┐рднрд┐рдиреНрди рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реЗ рди рдХреЗрд╡рд▓ рдЦрд░рд╛рдм рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдмреИрд╕рд╛рдЦреА рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рднреА: "рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯ" рдХреА рд╕рдорд╕реНрдпрд╛, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХред рдореИрдВрдиреЗ рд▓реЗрдЦ " рдХрд╛рд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрд╕реЗрдВрд╕, рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХрд▓-рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП " рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Google рдХрд╛ рдкреНрд░рд▓реЗрдЦрди рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд╢рдВрд╕рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рдПрдХрд▓ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред

рдПрдВрдбреНрд░реЙрдЗрдб 10 рд╕реЗ рдкрд╣рд▓реЗ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛


рд╣рдо (Redmadrobot рдкрд░) рдХрд╛рдлреА рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрдирд╕реЗрдЯ рд╕реЗ рдмрдЪрддреЗ рд░рд╣реЗ рд╣реИрдВред рдмрд┐рдирд╛ рдмрдбрд╝реА рдмреИрд╕рд╛рдЦреА рдФрд░ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╣рдордиреЗ рдЙрдирд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХреИрд╕реЗ рдХрд┐рдпрд╛?

рдзреНрдпрд╛рди рджреЗрдВред рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдФрд░ рдХреЛрдб рдореЗрд░реЗ рдкрд╛рд▓рддреВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ GitFox рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдХреНрд░реАрди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рдЬрдм рд╣рдордиреЗ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП, рддреЛ рд╣рдордиреЗ рдХрднреА рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдиреАрдЪреЗ рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдиреАрдЪреЗ рдХрд╛рд▓реА рдкрдЯреНрдЯреА рд╣реИ? рддреЛ рдХреНрдпрд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рд╢реАрд░реНрд╖ рдкрд░, рд╣рдордиреЗ рд╢реБрд░реВ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рд▓реА рд╣реИред рдпрд╣ рд▓реЗрдЖрдЙрдЯ рдФрд░ рдХреЛрдб рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ?



рдЖрдХреГрддрд┐ рдореЗрдВ рдЕрдореВрд░реНрддрддрд╛: рд▓рд╛рд▓ рдмреНрд▓реЙрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИ, рдиреАрд▓рд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмреЙрдЯ (рдЯреИрдмреНрд╕ рдХреЗ рд╕рд╛рде) рдХреЗ рд╕рд╛рде рдЯреБрдХрдбрд╝рд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╣рд░реЗ рдЯреБрдХрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЯреВрд▓рдмрд╛рд░ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛?

рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдЭрдВрдбрд╛ рд╣реИ fitSystemWindowред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдВрдЯреЗрдирд░ рд╕реНрд╡рдпрдВ рдХреЛ рдкреИрдбрд┐рдВрдЧ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ рддрд╛рдХрд┐ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рднреА рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдХреЗ рдиреАрдЪреЗ рди рд╣реЛред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдзреНрд╡рдЬ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП Google рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмреИрд╕рд╛рдЦреА рд╣реИ рдЬреЛ рдЗрдирд╕реЗрдЯ рд╕реЗ рдбрд░рддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдмрд┐рдирд╛ рдЗрдирд╕реЗрдЯ рдХреЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдзреНрд╡рдЬ FitSystemWindow=тАЭtrueтАЭрдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреИрдбрд┐рдВрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрджрд╛рдиреБрдХреНрд░рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдпрджрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдЗрд╕ рдзреНрд╡рдЬ рдХреЛ "рд╕рд╣реА" рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдЯреЗрдирд░ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд▓рд╛рдЧреВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдЭрдВрдбрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рджреЛ рдЯреИрдм рд╡рд╛рд▓реА рд╕реНрдХреНрд░реАрди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рд▓реЗрдирджреЗрди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ replaceрдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ , рдФрд░ рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред



рджреВрд╕рд░реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдПрдХ рдзреНрд╡рдЬ рд╕реЗрдЯ рднреА рд╣реЛрддрд╛ рд╣реИ FitSystemWindow=тАЭtrueтАЭ, рдФрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реБрдЖ, рдХреНрдпреЛрдВ? рдЬрд╡рд╛рдм рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреИрд╕рд╛рдЦреА рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╣рдордиреЗ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд╛рдпрд╛ : рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ FrameLayout, рд▓реЗрдХрд┐рди рдирд╣реАрдВ CoordinatorLayoutред рдпрд╣ рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╣рд╛рдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдХрд╛рдо рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ?


рдЖрдЗрдП рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ CoordinatorLayoutред

@Override
public void onAttachedToWindow() {   
    super.onAttachedToWindow();
    ...    
    if (mLastInsets == null && ViewCompat.getFitsSystemWindows(this)) {         
        // We're set to fitSystemWindows but we haven't had any insets yet...
        // We should request a new dispatch of window insets
        ViewCompat.requestApplyInsets(this);
    }     
    ...
}

рд╣рдо рдПрдХ рд╕реБрдВрджрд░ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдЗрдирд╕реЗрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдирд╣реАрдВ рд╣реИрдВред рдЬрдм рд╣рдо рдПрдХ рдЦрд┐рдбрд╝рдХреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрдирд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреВрдЫрдирд╛ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рд▓рдЧрд╛ рдХрд┐ рдЗрдирд╕реЗрдЯ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдВрджрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ Coordinatorред

2019 рдХреЗ рд╡рд╕рдВрдд рдореЗрдВ, рд╣рдордиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕ рд╕рдордп Google I / O рдЕрднреА-рдЕрднреА рдкрд╛рд░рд┐рдд рд╣реБрдЖред рд╣рдордиреЗ рдЕрднреА рддрдХ рд╕рдм рдХреБрдЫ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛ред рд▓реЗрдХрд┐рди рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рддрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдЯреИрдм рдХрд┐рд╕реА рддрд░рд╣ рдзреАрдорд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЬрдЯрд┐рд▓ рд▓реЗрдЖрдЙрдЯ рд╣реИ, рдЬреЛ рдпреВрдЖрдИ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИред рд╣рдо рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдЦреЛрдЬрддреЗ рд╣реИрдВ - рддрд╛рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рд▓реЗрдЖрдЙрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рди replaceрдХрд░реЗрдВ show/hideрддреЛ рдмрджрд▓ рджреЗрдВ ред



рд╣рдо рдмрджрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ! рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдмреИрд╕рд╛рдЦреА рдмрд┐рдЦреЗрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╛рдо рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ред рд╣рдо рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА ViewGroup рдЗрдирд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред


@Override
public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {    
    insets = super.dispatchApplyWindowInsets(insets);     
    if (!insets.isConsumed()) {         
        final int count = getChildCount();        
        for (int i = 0; i < count; i++) {
            insets = getChildAt(i).dispatchApplyWindowInsets(insets);             
            if (insets.isConsumed()) {          
                break;
            }
        }
    }
    return insets;
}

рдЕрдВрджрд░ рдРрд╕рд╛ рдПрдХ рддрд░реНрдХ рд╣реИ: рдЕрдЧрд░ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдирд╕реЗрдЯ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ ViewGroup рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдмрд╛рдж рдХреЗ рджреГрд╢реНрдп рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдореБрдЭреЗ рд╣рдорд╛рд░реЗ рдлреНрд░реЗрдорд▓реЗрдпрдЖрдЙрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЯреИрдм рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред



рдЕрдВрджрд░ рдкрд╣рд▓рд╛ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЭрдВрдбрд╛ рд╕реЗрдЯ рд╣реИ fitSystemWindow=тАЭtrueтАЭред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдЯреБрдХрдбрд╝реЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо HIDEрдкрд╣рд▓реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ SHOWрджреВрд╕рд░реЗ рдХреЛред рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ - рдЙрд╕рдХрд╛ рджреГрд╢реНрдп рдмрдЪрд╛ рд╣реБрдЖ рд╣реИ, рдмрд╕ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред

рдХрдВрдЯреЗрдирд░ рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ: рдпрд╣ рдкрд╣рд▓рд╛ рдЯреБрдХрдбрд╝рд╛ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЗрдирд╕реЗрдЯ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ fitSystemWindow=тАЭtrueтАЭ- рд╡рд╣ рдЙрдиреНрд╣реЗрдВ рд▓реЗ рдЧрдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ред рдмрд┐рд▓реНрдХреБрд▓, рдлрд╝реНрд░реЗрдорд▓реИрдЯрдЖрдЙрдЯ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдирд╣реАрдВ рджрд┐рдпрд╛ред рд╣рд░ рдЪреАрдЬрд╝ рд╡реИрд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рдЬреИрд╕реА рдЙрд╕реЗ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛, рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╣рдо рдЕрдкрдирд╛ ViewGroup рд▓рд┐рдЦрддреЗ рд╣реИрдВ


рд╣рдо рдЬрд╛рд╡рд╛ рд╕реЗ рдЖрдП рдереЗ, рдФрд░ рд╡рд╣рд╛рдВ рдУрдУрдкреА рдЕрдкрдиреА рдорд╣рд┐рдорд╛ рдореЗрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ ViewGroup рд▓рд┐рдЦрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдордиреЗ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ dispatchApplyWindowInsetsред рдпрд╣ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдпрд╣ рд╣рдореЗрд╢рд╛ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рд╡рд╛рдкрд╕ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реЛ рдпрд╛ рдирд╣реАрдВред

class WindowInsetFrameLayout @JvmOverloads constructor(
    context: Context,      
    attrs: AttributeSet? = null,     
    defStyleRes: Int = 0
) : FrameLayout(context, attrs, defStyleRes) {

    override fun dispatchApplyWindowInsets(insets: WindowInsets): WindowInsets { 
        for (child in (0 until childCount)) {
            getChildAt(child).dispatchApplyWindowInsets(insets)
        }
        return insets.consumeSystemWindowInsets()
    }
}

рдХрд╕реНрдЯрдо рд╡реНрдпреВрдЧреНрд░реБрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рднреА рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рдЕрднреА рднреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред рдЬрдм рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ Google IO рдкрд░ рд╣рдореЗрдВ рдХреНрдпрд╛ рдмрддрд╛рдпрд╛ рдерд╛, рддреЛ рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдо рдЕрдм рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред

Android 10


рдПрдВрдбреНрд░реЙрдЗрдб 10 рдиреЗ рд╣рдореЗрдВ рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпреВрдЖрдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рджрд┐рдЦрд╛рдИрдВ, рдЬрд┐рдирдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝рд╛рдИ рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ: рдПрдЬ-рдЯреВ-рдПрдЬ рдФрд░ рдЧреЗрд╕реНрдЯреНрдпреВрд░рд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рдиред

рдмрд░рд╛рдмрд░реА рдХрд╛ред рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд╛рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рд╕рд┐рд╕реНрдЯрдо рдкреИрдирд▓ рдХреЗ рддрд╣рдд рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ред



рдкрд╣рд▓реЗ, рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рдереЗ рдпрд╛ рдХреЗрд╡рд▓ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдХреЗ рддрд╣рдд рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред

рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рди рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рддрддреНрд╡ рддрдХ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд▓реНрдХрд┐ рдЖрдЧреЗ рднреА рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рдиреАрдЪреЗ рдирд╣реАрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЬреЗрд╕реНрдЯреНрд░рд┐рдпрд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рдиред рдпрд╣ рджреВрд╕рд░реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрд╡рдзрд╛рд░рдгрд╛ рдЬреЗрд╕реНрдЪрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣реИ ред рдпрд╣ рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдЕрдкрдиреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬреЗрд╕реНрдЪрд░ рдореЛрдб рдЧреИрд░-рдорд╛рдирдХ рд╣реИ, рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЗрд╕ рдХреНрд╖рдг, рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рд╣рдо рдЧреБрдгрд╡рддреНрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрдирд╕реЗрдЯреНрд╕ рд╕реЗ рдмрдЪрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдЗрдирд╕реЗрдЯ рдХреНрдпрд╛ рд╣реИрдВред

рд╕рдиреНрдирд┐рд╡реЗрд╢ рдЖрдкрдХреЛ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ?


рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдбрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирд╕реЗрдЯ рдмрдирд╛рдП рдЧрдП рдереЗред
рд╡реЗ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб 5 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдмреЗрд╢рдХ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрдирд╕реЗрдЯ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕рд░рд▓ рд╣реИ - рд╡реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рд┐рд╕реНрдЯрдо UI рдУрд╡рд░рд▓реЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░, рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдпрд╛ рдХреАрдмреЛрд░реНрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреАрдмреЛрд░реНрдб рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рд┐рд╕реНрдЯрдо UI рднреА рд╣реИ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдмреИрд╕рд╛рдЦреА рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдмреИрд╕рд╛рдЦреА рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рдЗрдирд╕реЗрдЯреНрд╕ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдмрдЯрди рдХреЗ рдКрдкрд░ рдПрдХ рдФрд░ рддрддреНрд╡ рд╣реИ, рддреЛ рд╣рдо рдмрдЯрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХреЗред

рдЗрдирд╕реЗрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗWindowlnsets рд▓рд┐рдП, рдПрдВрдбреНрд░реЙрдЗрдб 10 рдФрд░ WindowInsetsCompatрдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред

Android 10 рдореЗрдВ 5 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдирд╕реЗрдЯ рд╣реИрдВрдФрд░ рдПрдХ "рдмреЛрдирд╕", рдЬрд┐рд╕реЗ рдЗрдирд╕реЗрдЯ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдпрдерд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдмрд╛рдд рдЬрд╛рдирддреЗ рд╣реИрдВ - рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ рдЗрдирд╕реЗрдЯред

рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ рдЗрдирд╕реЗрдЯ


рдПрдВрдбреНрд░реЙрдЗрдб 5.0 (рдПрдкреАрдЖрдИ 21) рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ getSystemWindowInsets()ред

рдпрд╣ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдирд╕реЗрдЯ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рд╕реАрдЦрдирд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдХреА рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдФрд░ рдлрд┐рд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдФрд░ рдХреАрдмреЛрд░реНрдбред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рддрдм рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдКрдкрд░ рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░ рдореЗрдВ: рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рдиреАрдЪреЗ рдмрдЯрди рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рджреБрдЦреА рд╣реИред



рдЯреЗрдк рдХрд░рдиреЗ рдпреЛрдЧреНрдп рддрддреНрд╡ рдЗрдирд╕реЗрдЯ


рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб 10 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ getTappableElementInsets()ред рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ ред

рдпреЗ рдЗрдирд╕реЗрдЯ рдХреЗрд╡рд▓ рд╡рд┐рднрд┐рдиреНрди рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдореЛрдб рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ ред рдЬреИрд╕рд╛ рдХрд┐ рдХреНрд░рд┐рд╕ рдмреИрди рдЦреБрдж рдХрд╣рддреЗ рд╣реИрдВ , рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реА рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди 100% рд╢рд╛рдВрдд рд╣реЛ, 99.9% рд╢рд╛рдВрдд рди рд╣реЛ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рддрд╕реНрд╡реАрд░ рдкрд░ рджреЗрдЦреЛред



рд╢реАрд░реНрд╖ рдкрд░, рдХреНрд░рд┐рдорд╕рди рд░рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдореЛрдб рдореЗрдВ рдЖрдПрдЧрд╛ред рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рджрд╛рдИрдВ рдУрд░ рдФрд░ рдмрд╛рдИрдВ рдУрд░ рд╡реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВред

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рд╕рд╣реА рдореЛрдб рдореЗрдВ, рд╣рдо рдХрднреА рднреА рдПрдХ рдирдП рдкреИрдирд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдЕрдкрдиреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЛ рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ рдЦреАрдВрдЪреЗрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмрдЯрди рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреЗ FAB (рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдПрдХреНрд╢рди рдмрдЯрди) рдХреЛ рджрдмрд╛рддреЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдИ рднреА рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ TappableElementInsetsрдЦрд╛рд▓реА рдЖрдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдПрдлрдПрдмреА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдереЛрдбрд╝рд╛ рдКрдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдареАрдХ рд╣реИред

рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдЗрд╢рд╛рд░рд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ (рд░рдВрдЧ рдЕрдиреБрдХреВрд▓рди) рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ ред рдпрд╣ рдмрд╣реБрдд рд╕реБрдЦрдж рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИред



рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдкреНрд░рд┐рдп рд▓рдЧ рд░рд╣рд╛ рд╣реИред рддрддреНрд╡реЛрдВ рдХреА рдирд┐рдХрдЯрддрд╛ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЗрд╢рд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╛ рддреЛ рдПрдлрдПрдмреА рдХреЛ рдЕрдзрд┐рдХ рдмрдврд╝рд╛рдПрдВ рдпрд╛ рджрд╛рдИрдВ рдУрд░ рдЫреЛрдбрд╝ рджреЗрдВред

рд╕рд┐рд╕реНрдЯрдо рдЬреЗрд╕реНрдЪрд░ рдЗрдирд╕реЗрдЯреНрд╕


рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб 10 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ getSystemGestureInsets()ред рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ ред

рдпреЗ рдЗрдирд╕реЗрдЯ рдЬреЗрд╕реНрдЪрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо UI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдЬреЗрд╕реНрдЪрд░ рдЗрдВрд╕реЗрдЯреНрд╕ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпреВрдЖрдИ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдпрдВ рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рд╡реЗ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рдХрд╣рд╛рдВ рд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░реЗрдЧрд╛ред

рдЗрди рдЖрдХреГрддрд┐рдпреЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рд▓рдЧрднрдЧ рдЙрди рд╣реИрдВ рдЬреЛ рдЖрд░реЗрдЦ рдкрд░ рдкреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрдВред



рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рд╡реЗ рд╣рдореЗрд╢рд╛ рдРрд╕реЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рд╣рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рд╕реИрдорд╕рдВрдЧ рдФрд░ рдЕрдиреНрдп рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреМрди рд╕реА рдирдИ рд╕реНрдХреНрд░реАрди рдЖрдПрдВрдЧреАред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕реНрдХреНрд░реАрди рд╕рднреА рддрд░рдл рд╣реИред рд╢рд╛рдпрдж рдЗрдирд╕реЗрдЯреНрд╕ рд╡рд╣ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдЬрд╣рд╛рдВ рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдЕрдореВрд░реНрдд рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рд╕рд┐рд╕реНрдЯрдо рдЬреЗрд╕реНрдЪрд░ рдЗрдирд╕реЗрдЯреНрд╕ рдореЗрдВ рдРрд╕реЗ рдЗрдирд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдЦреБрдж рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред

рдЗрди рдкрд░ рдХрд╛рдмреВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдлреЛрдЯреЛ рдПрдбрд┐рдЯрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рдЖрдк рд╕реНрд╡рдпрдВ рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╡реЗ рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдкрд╛рд╕ рд╣реЛрдВред рдЙрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдлреЛрдЯреЛ рдХреЗ рдХреЛрдиреЗ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдмрд┐рдВрджреБ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрддрд╛рдХрд░ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: "рдореИрдВ рд╣рдореЗрд╢рд╛ рдмрд┐рдВрджреБ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╡рд░реНрдЧ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реВрдВрдЧрд╛ред"

рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдЗрд╢рд╛рд░рд╛ insets


рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб 10 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдЬреЗрд╕реНрдЪрд░ рдЗрдирд╕реЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдЙрдкрдкреНрд░рдХрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдо getMandatorySystemGestureInsets()рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ "рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛: рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣рд╛рд╡рднрд╛рд╡ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рдЬреЛ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдореБрдЦреНрдп рд╕реНрдХреНрд░реАрди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдВ, рд╕рд┐рд╕реНрдЯрдо рд╣рдореЗрд╢рд╛ рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ ред


рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдирд┐рдЪрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рд╣реЛ рдФрд░ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдпрд╣ рд╕рд╛рдЗрдЬ рдХрд╛ рд╣реЛред рдПрдХ рдЕрдореВрд░реНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред

рдпреЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдирд╕реЗрдЯ рдереЗред рд▓реЗрдХрд┐рди рдРрд╕реЗ рднреА рд╣реИрдВ рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб 5 рд╕реЗ рдкрд╣рд▓реЗ рднреА рджрд┐рдЦрд╛рдИ рджрд┐рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ред

рд╕реНрдерд┐рд░ рдЗрдирд╕реЗрдЯ


рдПрдВрдбреНрд░реЙрдЗрдб 5.0 (рдПрдкреАрдЖрдИ 21) рдХреЗ рд╕рд╛рде рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ getStableInsets()ред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣рдореЗрд╢рд╛ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд░рд╣рд╕реНрдп рдмрддрд╛рддрд╛ рд╣реВрдВ: рдпреЗ рдЗрдирд╕реЗрдЯ рдХреЗрд╡рд▓ рдкреВрд░реНрдг-рд╕реНрдХреНрд░реАрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ: рд╡реАрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░, рдЧреЗрдоред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд▓реЗрдмреИрдХ рдореЛрдб рдореЗрдВ, рдХреЛрдИ рднреА рд╕рд┐рд╕реНрдЯрдо UI рдЫрд┐рдкрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдХреНрд░реАрди рдХреЛ рдЫреВрдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рд╢реАрд░реНрд╖ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░реАрди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХреЛрдИ "BACK" рдмрдЯрди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдЯреИрдм рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ UI рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдмрдЯрди рдиреАрдЪреЗ рдХреВрджрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдХреЛ рдирд╣реАрдВ рдЫреВрддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдмрдЯрди рдКрдкрд░ рдЙрдЫрд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ рдЗрдирд╕реЗрдЯ рдЧрд╛рдпрдм рд╣реЛ рдЧрдП рд╣реИрдВред

рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рд░ рдЗрдирд╕реЗрдЯ рд╕рд╣реА рд╣реИрдВред рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдХреЛрдИ рддрддреНрд╡ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рдЬрд╛рдирдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рдЗрд╕ рдореЛрдб рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдФрд░ рдЬрд╣рд╛рдБ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдмрдЯрди рдХреЛ рд╕реНрдерд┐рддрд┐ рджреЗрдВред

рдзреНрдпрд╛рди рджреЗрдВред рд╡рд┐рдзрд┐ getStableInsets()рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ 21 рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреАред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрдХреНрд░реАрди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рдереЗред 

рд╣рдордиреЗ 5 рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдирд╕реЗрдЯреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХреА, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рднреА рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдЗрдирд╕реЗрдЯреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдмреИрдВрдЧреНрд╕ рдФрд░ рдХрдЯрдЖрдЙрдЯ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдмреИрдВрдЧреНрд╕ рдФрд░ рдиреЗрдХрд▓рд╛рдЗрдиреНрд╕


рд╕реНрдХреНрд░реАрди рдЕрдм рдЪреМрдХреЛрд░ рдирд╣реАрдВ рд╣реИрдВред рд╡реЗ рддрд┐рд░рдЫреЗ рд╣реИрдВ, рдХреИрдорд░реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрдЯрдЖрдЙрдЯ рд╣реИрдВ рдФрд░ рд╕рднреА рддрд░рдл рдмреИрдВрдЧреНрд╕ рд╣реИрдВред



28 рдПрдкреАрдЖрдИ рддрдХ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХреЗред рдореБрдЭреЗ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЗ рдЬрд░рд┐рдП рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдерд╛ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди 28 рдПрдкреАрдЖрдИ рдФрд░ рдЙрд╕рд╕реЗ рдкрд░реЗ (рдкрд┐рдЫрд▓реЗ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реЗ), рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╡рд░реНрдЧ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ DisplayCutoutред рдпрд╣ рдЙрд╕реА рдЗрдирд╕реЗрдЯ рдореЗрдВ рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рдЖрдк рдЕрдиреНрдп рд╕рднреА рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдХреНрд╖рд╛ рдЖрдкрдХреЛ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдФрд░ рдЖрдХрд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рд╕реНрдерд╛рди рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП y рдЭрдВрдбреЗ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ WindowManager.LayoutParamsред рд╡реЗ рдЖрдкрдХреЛ рдХрдЯрдЖрдЙрдЯ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЖрдкрдХреА рд╕рд╛рдордЧреНрд░реА рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ: рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкрд░рд┐рджреГрд╢реНрдп рдФрд░ рдЪрд┐рддреНрд░ рдореЛрдб рдореЗрдВред

рдЭрдВрдбреЗwindow.attributes.layoutInDisplayCutoutMode =

  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULTред рдЪрд┐рддреНрд░ рдореЗрдВ - рдФрд░ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рд╣реИ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рд▓реА рдкрдЯреНрдЯреАред
  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVERред рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ - рдПрдХ рдХрд╛рд▓реА рдкрдЯреНрдЯреАред
  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES - рд╣рдореЗрд╢рд╛ рд╣реИред

рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдирдХреЗ рд╕рд╛рде рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЗрдирд╕реЗрдЯ рдХреЗ рд╕рд╛рдеред

insets.displayCutout
    .boundingRects
    .forEach { rect -> ... }

рдПрдХ рд╕рд░рдгреА рд╡рд╛рд▓реЗ рдЗрдирд╕реЗрдЯ рд╡рд╛рд▓реЗ рдХреЙрд▓рдмреИрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрддреЗ рд╣реИрдВ displayCutoutред рдлрд┐рд░ рд╣рдо рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рдХрдЯрдЖрдЙрдЯ рдФрд░ рдмреИрдВрдЧреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрд╡реЗрджрди рдореЗрдВ рд╣реИрдВред рдЖрдк рд▓реЗрдЦ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ ред

6 рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдирд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛ред рдЕрдм рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдХрд╛рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ


рдЗрдирд╕реЗрдЯреНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдКрдкрд░ рдХреБрдЫ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ред



рдЗрдирд╕реЗрдЯ рдХреЗ рдмрд┐рдирд╛, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкрд╛рд░рджрд░реНрд╢реА рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдФрд░ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЖрд╢реНрдЪрд░реНрдп рди рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ SystemWindowInsets, рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИред

рдЬрд╛рд▓ рдмрд┐рдЫрд╛рдУ


рд╕рдВрдкреВрд░реНрдг UI рдкрджрд╛рдиреБрдХреНрд░рдо рдПрдХ рдкреЗрдбрд╝ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд┐рд░реЛрдВ рдкрд░ рдПрдХ рджреГрд╢реНрдп рд╣реЛрддрд╛ рд╣реИред рдиреЛрдбреНрд╕ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╡реНрдпреВрдЧреНрд░реБрдк рд╣реЛрддреЗ рд╣реИрдВред рд╡реЗ рд╡реНрдпреВ рд╕реЗ рднреА рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрдирд╕реЗрдЯ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рдЙрдирдХреЗ рдкрд╛рд╕ рдЖрддреЗ рд╣реИрдВ dispatchApplyWindowInsetsред рд░реВрдЯ рд╡реНрдпреВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░ рд╕рд┐рд╕реНрдЯрдо рдкреВрд░реЗ рдЯреНрд░реА рдореЗрдВ рдЗрдирд╕реЗрдЯ рднреЗрдЬрддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рджреЗрдЦреЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



рд╕рд┐рд╕реНрдЯрдо рдЙрд╕ рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрджреНрдзрддрд┐ dispatchApplyWindowInsetsрдореЗрдВ рдЗрдирд╕реЗрдЯ рдЖрддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╢реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХреБрдЫ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░реЗрдВ?

рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ WindowInsets рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдЗрдирд╕реЗрдЯ рд╕рдВрднрд╛рд▓рдирд╛


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, dispatchApplyWindowInsetsрдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реНрдХ рдХреЗ рдЕрдВрджрд░ рд╡рд┐рдзрд┐ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИ : рдЗрдирд╕реЗрдЯреНрд╕ рдЖрдП, рд╣рдордиреЗ рдЕрдВрджрд░ рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред

рдпрджрд┐ рдЖрдк рд╡реНрдпреВ рдХреНрд▓рд╛рд╕ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд┐рдЦреЗ рдЬрд╛рд╡рджреЛрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: "рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдмрд╛рдзрд┐рдд рди рдХрд░реЗрдВ!"
рд╣рдо рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдпрд╛ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдирд╕реЗрдЯ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред
рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред Google рдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛, рдЬреЛ рдЗрдирд╕реЗрдЯ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЖрдк рдЗрд╕реЗ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ setOnApplyWindowInsetsListener(listener)ред рд╣рдо рдПрдХ рдХреЙрд▓рдмреИрдХ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрди рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╡реНрдпреВ рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ onApplyWindowInsets(WindowInsets insets)ред рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЗрдирд╕реЗрдЯ рдХреЛ рдЗрд╕рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

Google рдиреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдмреАрдЪ рдЪрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЗрдирд╕реЗрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреВрд▓рдмрд╛рд░ рдпрд╛ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рд╣рдо рдХрд┐рд╕реА рднреА рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рджреГрд╢реНрдп, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рднреА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣рд╛рдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХреЗ рдмрд┐рдирд╛ рдЗрдирд╕реЗрдЯ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗред

рд╣рдо рдХреНрдпрд╛ рд▓реМрдЯрд╛рдПрдВрдЧреЗ?

рдХреБрдЫ рд╡рд╛рдкрд╕ рдХреНрдпреЛрдВ?


рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрдирд╕реЗрдЯреНрд╕ рдХрд╛ рд╡рд┐рддрд░рдг, рдЕрд░реНрдерд╛рддреН, рд╡реНрдпреВрдЧреНрд░реБрдк, рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдЕрдкрдиреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рдХрд░ рд░рд╣реА рд╣реИред рдЖрдЗрдП рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рд╕рд┐рд╕реНрдЯрдо рдЗрдирд╕реЗрдЯ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 100 рдкрд┐рдХреНрд╕реЗрд▓ рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рдЖрдПред ViewGroup рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рднреЗрдЬрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╣реИред рдЗрд╕ рджреГрд╢реНрдп рдиреЗ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдВрднрд╛рд▓рд╛ рдФрд░ рдЗрдирд╕реЗрдЯ рд▓реМрдЯрд╛рдпрд╛: рд╢реАрд░реНрд╖ рдкрд░ рдпрд╣ рдШрдЯрдХрд░ 0 рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрд▓ рдкрд░ рдпрд╣ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╢реАрд░реНрд╖ рдкрд░, рдЙрд╕рдиреЗ рдкреИрдбрд┐рдВрдЧ рдпрд╛ рдорд╛рд░реНрдЬрд┐рди рдЬреЛрдбрд╝рд╛, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдиреАрдЪреЗ рдЙрд╕рдиреЗ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рд╕реВрдЪрдирд╛ рджреАред рдЗрд╕рдХреЗ рдмрд╛рдж, ViewGroup рджреВрд╕рд░реЗ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЗрдирд╕реЗрдЯ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред



рдЕрдЧрд▓реЗ рджреГрд╢реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдЗрдирд╕реЗрдЯ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╡реНрдпреВрдЧреНрд░реБрдк рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рджреЛрдиреЛрдВ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИ, рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рд╢реВрдиреНрдп рд╣реИрдВред

рддреАрд╕рд░рд╛ рджреГрд╢реНрдп рдпрд╣ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреБрдЫ рдЗрдирд╕реЗрдЯ рдереЗ рдФрд░ рдХреБрдЫ рд╣реЛ рд░рд╣рд╛ рдерд╛ред рд╡реНрдпреВрдЧреНрд░реБрдк рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ рджреЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдерд╛ред

рдЬрдм рд╣рдордиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рд╣рдордиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд┐рдЦ рджрд┐рдпрд╛ - рд╣рдореЗрд╢рд╛ рд╡рд╣реА рдЗрдВрд╕реЗрдЯрд┐рд╡ рд▓реМрдЯрд╛рдПрдВ рдЬреЛ рдЖрдпрд╛ рдерд╛ред рд╣рдо рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рдЬрдм рдХреБрдЫ рджреГрд╢реНрдп рдпрд╣ рднреА рдирд╣реАрдВ рдкрд╣рдЪрд╛рди рдкрд╛ рд░рд╣реЗ рдереЗ рдХрд┐ рд╡рд╣рд╛рдБ рдХреЛрдИ рдЗрдирд╕реЗрдЯ рдерд╛ред рд╡рд┐рдЪрд╛рд░ рддрд╛рд░реНрдХрд┐рдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдирд╣реАрдВред Google рдиреЗ рдЗрдирд╕реЗрдЯреНрд╕ рдореЗрдВ рд╡реНрдпрд░реНрде рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред

рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдЗрдирд╕реЗрдЯ рд╣рдореЗрд╢рд╛ рд╡реНрдпреВ рдХреЗ рдкреВрд░реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рддрдХ рдкрд╣реБрдВрдЪреЗрдВ рдФрд░ рдЖрдк рд╣рдореЗрд╢рд╛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕реА рдХреЛрдИ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА рдЬрдм рд╣рдо рджреЛ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдиреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЕрднреА рддрдХ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдЕрднреНрдпрд╛рд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд▓реМрдЯ рдЖрдПрдВрдЧреЗред

рдЕрднреНрдпрд╛рд╕


рдереНрдпреЛрд░реА рдХреА рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреЛрдб рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдЪрд┐рдХрдирд╛ рд╣реЛрддрд╛ рд╣реИред рд╣рдо AndroidX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдзреНрдпрд╛рди рджреЗрдВред рдореЗрдВ GitFox, рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА, рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдирдП Android рд╕реЗ рд╕рднреА рдЙрдкрд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рд╕рдорд░реНрдерди рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рди рдХрд░рдиреЗ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ view.setOnApplyWindowInsetsListener { v, insets -> ... }рдЗрдирд╕реЗрдЯреНрд╕ рдХреА рдЦреЛрдЬ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрд╢рд╛ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдЗрд╕рдХреЗ рдмрдЬрд╛рдп ViewCompat.setOnApplyWindowInsetsListener(view) { v, insets -> ... }ред

рдПрдХ рдбрд╛рд░реНрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░реАрди рд╣реИред рдпрд╣ рд╢реАрд░реНрд╖ рдкрд░ рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЛ рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рд╡рд╣ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдЕрднреНрдпрд╕реНрдд рд╣реИрдВред


рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЕрдм рд╣рдореЗрдВ рдЗрд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдХреИрд╕реЗ?

рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ


рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИрдВред

<style name="AppTheme" parent="Theme.MaterialComponents.Light">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

рдЗрд╕ рд╕рдордп, рд╕рдм рдХреБрдЫ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рджреЛрдиреЛрдВ рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред

рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рджреЛ рдЭрдВрдбреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрд╢рд╛ рддреАрди рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рд╕реНрд╡рдпрдВ рд╣реА рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛ рдЬрд╛рдПрдЧреА - рдРрд╕рд╛ рдХреЛрдИ рд╕реАрдорд╛ред рдЖрдк рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯрддрд╛ рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ 2 рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЕрдиреБрдпрд╛рдпреА рд╕рдордЭ рд╕рдХреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдВрджрд░ рдЦреБрджрд╛рдИ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рдпрд╣ рд╡рд┐рдзрд┐ рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдФрд░ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рд▓реА рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдлреЗрдж рд╣реИ, рддреЛ рдЖрдк рдХреЗрд╡рд▓ рдХреЛрдб рд╕реЗ рд░рдВрдЧ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?

рд░рдВрдЧ рдХреЗ рд╕рд╛рде рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ


рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдХрд▓ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рджреЛ рдЭрдВрдбреЗ рд▓рдЧрд╛рдПред

rootView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or  
    View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

<style name="AppTheme" parent="Theme.MaterialComponents.Light">
    <!-- Set the navigation bar to 50% translucent white -->
    <item name="android:navigationBarColor">#80FFFFFF</item> 
</style>

рд╡рд╣рд╛рдБ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЭрдВрдбреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдпреЗ рджреЛрдиреЛрдВ рд╣реИрдВ рдЬреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдФрд░ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдореЗрдВ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред рд░рдВрдЧ рд╡рд┐рд╖рдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ: рдереАрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ, рдФрд░ рдЭрдВрдбреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫред рд▓реЗрдХрд┐рди рд╣рдо рдХреЛрдб рдФрд░ рд╡рд┐рд╖рдп рджреЛрдиреЛрдВ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд╡рд┐рд╖рдп рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдзреНрд╡рдЬ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред navigationBarColorрдпрд╣ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдЧрд╛ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб 5 рдкрд░ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдЖрдПрдЧрд╛ред GitFox рдореЗрдВ, рдпрд╣ рдЙрд╕ рдХреЛрдб рд╕реЗ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХрд╛ рд░рдВрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред

рд╣рдордиреЗ рдзреЛрдЦрд╛рдзрдбрд╝реА рдХреЛ рдЕрдВрдЬрд╛рдо рджрд┐рдпрд╛ - рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдлреЗрдж рд╣реИред рдЕрдм рдЖрд╡реЗрджрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред


рдЗрдирд╕реЗрдЯ рд╕рдВрднрд╛рд▓рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЖрд╕рд╛рди рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рд╛рдердорд┐рдХред

ViewCompat
    .setOnApplyWindowInsetsListener(bottomNav) { view, insets ->  
        view.updatePadding(bottom = insets.systemWindowInsetBottom) 
        insets
    }

рд╣рдо рд╡рд┐рдзрд┐ рд▓реЗрддреЗ рд╣реИрдВ setOnApplyWindowInsetsListenerрдФрд░ рдЗрд╕реЗ рдЗрд╕рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ bottomNavред рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдЗрдирд╕реЗрдЯ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдиреАрдЪреЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдкреИрдбрд┐рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ systemWindowInsetBottomред рд╣рдо рдЗрд╕реЗ рдиреАрдЪреЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╕рднреА рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рддрддреНрд╡ рд╢реАрд░реНрд╖ рдкрд░ рд╣реИрдВред рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрдирд╕реЗрдЯ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рджреГрд╢реНрдп рднреА рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВред

рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред


рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдВ рдПрдХ рдЬрд╛рд▓ рд╣реИред рдпрджрд┐ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд╣рдордиреЗ рдиреАрдЪреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреИрдбрд┐рдВрдЧ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╕реЗрдЯ updatePaddingрдЗрдирд╕реЗрдЯ рдмрд░рд╛рдмрд░ред рд╣рдорд╛рд░рд╛ рд▓реЗрдЖрдЙрдЯ рд╡реИрд╕рд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рдЬреИрд╕рд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдорд╛рдиреЛрдВ рдХреЛ рд▓реЗрдЖрдЙрдЯ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХрдо рдкреИрдбрд┐рдВрдЧ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдмрдЪрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдмрд╛рдж рдореЗрдВ, рдЬрдм рдЗрдирд╕реЗрдЯ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдореА рдорд╛рди рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕реЗрдЯ рдХрд░реЗрдВред

val bottomNavBottomPadding = bottomNav.paddingBottom
ViewCompat
    .setOnApplyWindowInsetsListener(bottomNav) { view, insets ->                 
        view.updatePadding(
        bottom = bottomNavBottomPadding + insets.systemWindowInsetBottom
    )
    Insets
}

рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: рдХреЛрдб рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдЬрд╣рд╛рдВ рдЖрдк рдЗрдирд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд▓реЗрдЖрдЙрдЯ рд╕реЗ рдореВрд▓реНрдп рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдпреВрдЖрдИ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рд▓реЗрдХрд┐рди рдХреЛрдЯрд▓рд┐рди рд╣реИ, рдФрд░ рдпрд╣ рдЕрджреНрднреБрдд рд╣реИ - рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдм рдХрд░реЗрдЧрд╛ред

Kotlin рдЬреЛрдбрд╝реЗрдВ!


рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ initialPaddingрдФрд░ рдЗрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рджреЗрддреЗ рд╣реИрдВ рдЬрдм рдирдП рдЗрдирд╕реЗрдЯ рдЖрддреЗ рд╣реИрдВ (рдЙрдирдХреЗ рд╕рд╛рде)ред рдЗрд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдКрдкрд░ рд╕реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рддрд░реНрдХ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред

fun View.doOnApplyWindowInsets(block: (View, WindowInsetsCompat, Rect) -> WindowInsetsCompat) {    

    val initialPadding = recordInitialPaddingForView(this)

    ViewCompat.setOnApplyWindowInsetsListener(this) { v, insets ->        
        block(v, insets, initialPadding)
    }
    
    requestApplyInsetsWhenAttached()
}

private fun recordInitialPaddingForView(view: View) =
   Rect(view.paddingLeft, view.paddingTop, view.paddingRight, view.paddingBottom)

  .

bottomNav.doOnApplyWindowInsets { view, insets, padding ->   
    view.updatePadding(
        bottom = padding.bottom + insets.systemWindowInsetBottom
    ) 
    insets
}

рд╣рдореЗрдВ рд▓рдВрдмреЛрджрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдореЗрдВ рди рдХреЗрд╡рд▓ рдЗрдирд╕реЗрдЯ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдкреИрдбрд┐рдВрдЧ рднреА рд╣реИред рд╣рдо рдЙрдиреНрд╣реЗрдВ рди рдХреЗрд╡рд▓ рдиреАрдЪреЗ рд╕реЗ, рдмрд▓реНрдХрд┐ рдКрдкрд░ рд╕реЗ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЯреВрд▓рдмрд╛рд░ рд╣реИ рдЬреЛ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред

рдХреБрдЫ рднреВрд▓ рдЧрдпрд╛!


рдПрдХ рдЕрд╕рдВрдЧрдд рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реИред

fun View.doOnApplyWindowInsets(block: (View, WindowInsetsCompat, Rect) -> WindowInsetsCompat) {

    val initialPadding = recordInitialPaddingForView(this)
     
    ViewCompat.setOnApplyWindowInsetsListener(this) { v, insets ->        
        block(v, insets, initialPadding)
    }
      
    requestApplyInsetsWhenAttached() 
}

private fun recordInitialPaddingForView(view: View) =
      Rect(view.paddingLeft, view.paddingTop, view.paddingRight, view.paddingBottom)

рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдк рдпрд╣ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреЛ рдЗрдирд╕реЗрдЯ рднреЗрдЬ рджреЗрдЧрд╛ред рдпрджрд┐ рд╣рдо рдХреЛрдб рд╕реЗ рдПрдХ рджреГрд╢реНрдп рдмрдирд╛рддреЗ рд╣реИрдВ рдпрд╛ InsetsListenerрдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдпрдВ рдЕрдВрддрд┐рдо рдорд╛рди рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЬрдм рджреГрд╢реНрдп рд╕реНрдХреНрд░реАрди рдкрд░ рд╣реИ, рддреЛ рд╣рдордиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрддрд╛рдпрд╛: "рдЗрдирд╕реЗрдЯ рдЖ рдЪреБрдХреЗ рд╣реИрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред" рд╣рдо рд╢реНрд░реЛрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП requestsApplyInsetsред "

fun View.requestApplyInsetsWhenAttached() {    
    if (isAttachedToWindow) {        
        requestApplyInsets()
    } else {
        addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {            
            override fun onViewAttachedToWindow(v: View) {
                v.removeOnAttachStateChangeListener(this)
                v.requestApplyInsets()           
            }

            override fun onViewDetachedFromWindow(v: View) = Unit
        })
    }
}

рдпрджрд┐ рд╣рдордиреЗ рдПрдХ рд╡реНрдпреВ рдХреЛрдб рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрднреА рддрдХ рдЕрдкрдиреЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЙрд╕ рд╕рдордп рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдП рдЬрдм рд╣рдо рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рддрднреА рд╣рдо рдЗрдирд╕реЗрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдлрд┐рд░, рд╡рд╣рд╛рдБ рдХреЛрдЯрд▓рд┐рди рд╣реИ: рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд┐рдЦрд╛ рдерд╛ рдФрд░ рд╣рдореЗрдВ рдЕрдм рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

RefyclerView рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛


рдЕрдм рд╣рдо RecyclerView рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдВрддрд┐рдо рддрддреНрд╡ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИ рдФрд░ рдиреАрдЪреЗ рд░рд╣рддрд╛ рд╣реИ - рдмрджрд╕реВрд░рддред рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рднреА рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ рдирдпрд╛ рдкреИрдирд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдирд╛ рд╣реИ, рдПрдХ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рддрд╣рдд рдкреВрд░рд╛ рддрддреНрд╡ рдЧрд╛рдпрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд░реЗрдВ?



рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдиреАрдЪреЗ рдПрдХ рддрддреНрд╡ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рдФрд░ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдВрдЪрд╛рдИ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реИрдХрдбрд╝реЛрдВ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╡реЗрджрди рд╣реИ, рддреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪреА рдХреЛ рдЗрдирд╕реЗрдЯреНрд╕ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рд╣реЛрдЧреА, рд╡рд╣рд╛рдВ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдКрдВрдЪрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреА рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, RecyclerView рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрдм рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╣реИрдХ рд╣реИред рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ, рдпрд╣ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

<androidx.recyclerview.widget.RecyclerView 
        android:id="@+id/recyclerView"        
    android:layout_width="match_parent"    
    android:layout_height="match_parent"             
    android:clipToPadding="false" />

recyclerView.doOnApplyWindowInsets { view, insets, padding ->    
    view.updatePadding(
        bottom = padding.bottom + insets.systemWindowInsetBottom
    )
}

рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдРрд╕рд╛ рдЭрдВрдбрд╛ рд╣реИ clipToPaddingред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкреНрд░рдХрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкреИрдбрд┐рдВрдЧ рдЙрдЬрд╛рдЧрд░ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ clipToPadding="false", рддреЛ рдЖрдк рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм, рдпрджрд┐ рдЖрдк рдиреАрдЪреЗ рдХреА рдУрд░ рдЧрджреНрджреА рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ RecyclerView рдореЗрдВ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛: рдЧрджреНрджреА рдиреАрдЪреЗ рддрдХ рд╕реЗрдЯ рд╣реИ, рдФрд░ рдЬрдм рддрдХ рд╣рдо рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рдХрд░рддреЗ рддрдм рддрдХ рддрддреНрд╡ рдЗрд╕рдХреЗ рдКрдкрд░ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЕрдВрдд рдореЗрдВ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж, RecyclerView рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЭрдВрдбреЗ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ, рд╣рдо RecyclerView рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдордд рд╕реЛрдЪреЛ рдХрд┐ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рд╣реИрдВ - рдмрд╕ рдиреАрдЪреЗ рдкреЗрдбрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдореЗрдВред

рдЕрдм рд╣рдордиреЗ рд╣рдореЗрд╢рд╛ рдЗрдирд╕реЗрдЯ рд▓реМрдЯрд╛рдП рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдереЗред рдкреВрд░реЗ рдЗрдирд╕реЗрдЯреНрд╕ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдП, рд╣рдордиреЗ рдЙрдирдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд┐рдпрд╛, рдкреИрдбрд┐рдВрдЧ рд╕реЗрдЯ рдХреА рдФрд░ рдлрд┐рд░ рд╕реЗ рдкреВрд░реЗ рдЗрдирд╕реЗрдЯреНрд╕ рд▓реМрдЯрд╛ рджрд┐рдПред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ рднреА ViewGroup рд╣рдореЗрд╢рд╛ рдЗрди рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рд╕рднреА рд╡реНрдпреВ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИрдВред

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдЧ


Google Play рдкрд░ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдирд╕реЗрдЯ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рдмрдЧ рджреЗрдЦрд╛ред рдЕрдм рдореИрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред

рдмреЗрд╕рдореЗрдВрдЯ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░реАрди рд╣реИред рджрд╛рдИрдВ рдУрд░ рд╡рд╣реА рд╕реНрдХреНрд░реАрди рд╣реИ рдЬреЛ рдкрджрд╛рдиреБрдХреНрд░рдо рджрд┐рдЦрд╛рддреА рд╣реИред рд╣рд░реЗ рд░рдВрдЧ рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдПрдХ RecyclerView рд╣реИред



рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рдпрд╣рд╛рдВ рдХрд┐рд╕рдиреЗ рд╕рдВрднрд╛рд▓рд╛? рдЯреВрд▓рдмрд╛рд░: рдЙрд╕рдиреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЧрджреНрджреА рд▓рдЧрд╛рдИ рддрд╛рдХрд┐ рдЙрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдХреЗ рдиреАрдЪреЗ рдЪрд▓реА рдЬрд╛рдПред рддрджрдиреБрд╕рд╛рд░, рдиреАрдЪреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдиреЗ рдиреАрдЪреЗ рд╕реЗ рдЗрдирд╕реЗрдЯ рд▓рд╛рдЧреВ рдХрд┐рдП рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рдКрдкрд░ рдмрдврд╝ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди RecyclerView рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрдирд╕реЗрдЯ рдХреЛ рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЙрдирдХреЗ рдиреАрдЪреЗ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдирд╕реЗрдЯ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ - рд╕рдм рдХреБрдЫ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдФрд░ рдЬрдЧрд╣ рдореЗрдВ рд╣рд░реЗ рд░рдВрдЧ рдХреА рд░рд┐рд╕рд╛рдЗрдХреНрд▓рд░рд╡реНрдпреВ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдиреАрдЪреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдЕрдм рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, RecyclerView рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдиреАрдЪреЗ рд╕реЗ рдЗрдирд╕реЗрдЯ рд╕рдВрднрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдареАрдХ рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреИрдбрд┐рдВрдЧ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, RecyclerView рдореЗрдВ, рд╣рдо рдЗрдирд╕реЗрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред



рд╣рдо рдЕрдкрдиреА рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рд░ рдХреЛрдИ рдЗрдирд╕реЗрдЯ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ, рдХреЛрдИ рднреА рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ?



рд╣рдо рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ: RecyclerView рдиреЗ рдиреАрдЪреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдЗрдирд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ - рдиреАрдЪреЗ рдПрдХ рд╕реНрдерд╛рди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рдФрд░ рдХрд╛рдлреА рдмрдбрд╝реЗ рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдпред



рдпрджрд┐ рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЗрдирд╕реЗрдЯ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП (рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ!) рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЗрдирд╕реЗрдЯреНрд╕ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ: рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрдирд╕реЗрдЯ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реБрдПред рдЙрдиреНрд╣реЗрдВ RecyclerView рдирд╣реАрдВ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ InsetsListenerред рдЕрдВрджрд░ рдШрдЯрд╛рдПрдБ bottom + insetsрдХрд┐ рд╡реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, 0 рд▓реМрдЯреЗрдВред

doOnApplyWindowInsets { view, insets, initialPadding ->    
    view.updatePadding(
        bottom = initialPadding.bottom + insets.systemWindowInsetBottom
    )
    insets.replaceSystemWindowInsets(
        Rect(
            insets.systemWindowInsetLeft,            
            insets.systemWindowInsetTop,            
            insets.systemWindowInsetRight,
            0
        )
    )
}

рд╣рдо рдирдП рдЗрдирд╕реЗрдЯ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдкреБрд░рд╛рдиреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди bottom + insets0. рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдмрдХрд╡рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ - RecyclerView рдЕрднреА рднреА рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрдирд╕реЗрдЯ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред



рдореБрдЭреЗ рддреБрд░рдВрдд рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рддреАрдиреЛрдВ рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рд▓рд┐рдирд┐рдпрд░рд▓реИрдЯрдЖрдЙрдЯ рд╣реИред рдЙрдирдХреЗ рдЕрдВрджрд░ рдПрдХ рдЯреВрд▓рдмрд╛рд░ рд╣реИ, рдПрдХ рд░рд┐рд╕рд╛рдЗрдХрд▓рд░ рд╡реНрдпреВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рдФрд░ рдиреАрдЪреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рдиреАрдЪреЗред рд░реИрдЦрд┐рдХрд▓реЗрдпреВрдЯ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдХреНрд░рдо рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрди рдкрд░ рдЗрдирд╕реЗрдЯ рд▓рдЧрд╛рддрд╛ рд╣реИред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдирд┐рдЪрд▓рд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдЕрдВрддрд┐рдо рд╣реЛрдЧрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд┐рд╕реА рдХреЛ рдмрддрд╛рдпрд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рднреА рдЗрдирд╕реЗрдЯреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рдЪреБрдХреА рдереАред рд╕рднреА рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, RecyclerView рдкрд╣рд▓реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рдЪреБрдХрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╣рдореЗрдВ рдирд╣реАрдВ рдмрдЪрд╛рддрд╛ рд╣реИред



рдХреНрдпрд╛ рдХрд░реЗрдВ? LinearLayout рдореЗрд░реЗ рдЗрдЪреНрдЫрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдкрд╣рд▓реЗ рдПрдХ рддрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рднреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ


рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдореБрдЭ рдореЗрдВ рдЦреЗрд▓рд╛ - рд╕рдм рдХреБрдЫ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ! рдЦреИрд░, рдЕрдм dispatchApplyWindowInsetsрдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рд╕реЗрдЯ рдХрд░реЗрдВ yLinearLayout, рдЬреЛ рд╣рдореЗрд╢рд╛ рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ рдЬрд╛рдПрдЧрд╛ред рд╡рд╣ рдкрд╣рд▓реЗ рдЗрдирд╕реЗрдЯ рдмреЙрдЯрдо рдиреИрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░, рдФрд░ рдлрд┐рд░ рд╕рднреА рдХреЛ рднреЗрдЬреЗрдЧрд╛ред

@Override
public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {     
    insets = super.dispatchApplyWindowInsets(insets);     
    if (!insets.isConsumed()) {        
        final int count = getChildCount();
        for (int i = 0; i < count; i++) {
            insets = getChildAt(i).dispatchApplyWindowInsets(insets);
            if (insets.isConsumed()) {
                break;
            }
        }
    }
    return insets;
}

рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕рдордп рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛, рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред

рдпрд╣рд╛рдБ, рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдореЛрдХреНрд╖ рд╣реИ: ViewGroup рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ View рдкрд░ рд╕реБрдкрд░ рдореЗрдердб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдб рдореЗрдВ, рд╣рдореЗрдВ рдЗрдирд╕реЗрдЯ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрднреА рддрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рддрд░реНрдХ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд┐рдЦрд╛ред рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, InsetsListenerрдПрдХ рджреГрд╢реНрдп рдкрд░ рд▓рд╛рдЧреВ, рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпреЗ рдЗрдирд╕реЗрдЯ рдХрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЬрд╛рддреЗ рд╣реИрдВред

fun View.addSystemBottomPadding(    
    targetView: View = this
) {
    doOnApplyWindowInsets { _, insets, initialPadding ->           
        targetView.updatePadding(
            bottom = initialPadding.bottom + insets.systemWindowInsetBottom
        )
        insets.replaceSystemWindowInsets(
            Rect(
                insets.systemWindowInsetLeft,
                insets.systemWindowInsetTop,     
                insets.systemWindowInsetRight,
                0
            )
        )
    }
}

рдпрд╣рд╛рдВ рдпрд╣ targetViewрдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрд╕реА рджреГрд╢реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рдКрдкрд░ рд╣рдо рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ addSystemBottomPaddingред рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рд░реИрдЦрд┐рдХрдЕрд░рдЖрдЙрдЯ рдкрд░, рдореИрдВрдиреЗ рдРрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛, рдЬреИрд╕реЗ targetView- рдпрд╣ рдореЗрд░рд╛ рдирд┐рдЪрд▓рд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рд╣реИред

  • рдкрд╣рд▓реЗ рд╡рд╣ рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рдмреЙрдЯрдо рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рджреЗрдЧрд╛ред 
  • рд╡рд╣ рдЗрдирд╕реЗрдЯ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░реЗрдЧрд╛, рдЬреАрд░реЛ рдмреЙрдЯрдо рд▓реМрдЯреЗрдЧрд╛ред
  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡реЗ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ рдЬрд╛рдПрдВрдЧреЗ: рдЯреВрд▓рдмрд╛рд░, RecyclerView рдХреЗ рд╕рд╛рде рдЯреБрдХрдбрд╝рд╛ред
  • рдлрд┐рд░, рд╢рд╛рдпрдж, рд╡рд╣ рдлрд┐рд░ рд╕реЗ рдЗрдирд╕реЗрдЯ рдмреЙрдЯрдо рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рднреЗрдЬреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд╕рдм рдХреБрдЫ рдЗрддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдореИрдВрдиреЗ рдареАрдХ рд╡рд╣реА рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛: рд╕рднреА рдЗрдирд╕реЗрдЯреНрд╕ рдХреЛ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред



рдЬрд░реВрд░реА


рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рддреЗрдВред

рдХреАрдмреЛрд░реНрдб рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рд┐рд╕реНрдЯрдо UI рд╣реИред рдЙрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рдЗрд▓рд╛рдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк Google рдХреАрдмреЛрд░реНрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд▓реЗрдЖрдЙрдЯ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрдЯрди рд╣реИрдВ рдЬрд┐рди рдкрд░ рдЖрдк рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдХреАрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рд╕реИрдХрдбрд╝реЛрдВ рдореЛрдб рд╣реИрдВ: gifs рдФрд░ memes, рд╡реЙрдпрд╕ рдЗрдирдкреБрдЯ рдХреА рдЦреЛрдЬ, рдЖрдХрд╛рд░ рдореЗрдВ 10 рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рд▓реЗрдХрд░ рд╕реНрдХреНрд░реАрди рд╕рд╛рдЗрдЬрд╝ рддрдХред рдХреАрдмреЛрд░реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рд╕реЛрдЪреЛ, рд▓реЗрдХрд┐рди рдЗрдирд╕реЗрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВред

рдиреЗрд╡рд┐рдЧреЗрд╢рди рдбреНрд░рд╛рд╡рд░ рдЕрднреА рднреА рдЬреЗрд╕реНрдЪрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Google IO рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб 10 рдореЗрдВ, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдбреНрд░реЙрдЕрд░ рдЕрднреА рднреА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб 10 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╢рд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдбреНрд░рд╛рд╡рд░ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдордмрд░реНрдЧрд░ рдореЗрдиреВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рдЖрдкрдХреЛ рдЗрд╕реЗ рдлреИрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдкреВрд░реНрд╡-рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдбреНрд░реЙрдЕрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдирд╣реАрдВ рдХреА - рдпрд╣ рдкреНрд░реА-рдЕрд▓реНрдлрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рднрд▓реЗ рд╣реА рдЖрдк рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ GitFox рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдбреНрд░реЙрдЕрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЦреАрдВрдЪрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди рд╕рд╛рдордиреЗ рдЖрдПрдЧрд╛, рдореИрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдЪрд▓реЗрдЧрд╛ред

Android 10 рддреИрдпрд╛рд░реА рдЪреЗрдХрд▓рд┐рд╕реНрдЯ


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдФрд░ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдХреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ ред Google рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдПрдВрдбреНрд░реЙрдЗрдб 10. рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓реЗрдВред рдкрд╣рд▓реЗ рд╡рд┐рд╖рдп рдкрд░ рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░ рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдкрд╛рд░рднрд╛рд╕реА, рдФрд░ рдЙрд╕ рд▓реЗрдЖрдЙрдЯ рдХреЛ рд╕рд╣реА рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЯреВрдЯ рдЧрдпрд╛ рдерд╛ред

рдХреЛрдЯрд▓рд┐рди рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝реЗрдВ - рдпрд╣ рдЙрдирдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рд╣реИред

рдЧрджреНрджреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рднреА рдЯреВрд▓рдмрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдЯреВрд▓рдмрд╛рд░ рд╣рдореЗрд╢рд╛ рд╢реАрд░реНрд╖ рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣реА рдЖрдкрдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рднреА RecyclerViews рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рд╕реЗ рдкреИрдбрд┐рдВрдЧ рдФрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВclipToPadding="false" ред

рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ (FAB) рдХреЗ рд╕рднреА рдмрдЯрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ ред рдПрдлрдПрдмреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдЬрд╣рд╛рдВ рдЖрдк рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред

рд╕рднреА LinearLayout рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдпрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рди рдХрд░реЗрдВ ред рдЪрд╛рд▓ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ GitFox рдореЗрдВ рд╣реИ, рдпрд╛ рдорджрдж рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд▓реЗрдВред

рдХрд╕реНрдЯрдо рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдЗрд╢рд╛рд░реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ ред рдиреЗрд╡рд┐рдЧреЗрд╢рди рдбреНрд░рд╛рд╡рд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдиреЗрд╡рд┐рдЧреЗрд╢рди рдбреНрд░реЙрдЕрд░ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрди рдкрд░ рдЗрд╢рд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдирд╕реЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдкрд╛рд╕ рддрд╕реНрд╡реАрд░ рд╕рдВрдкрд╛рджрдХ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЗрд╢рд╛рд░реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

ViewPager рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХреЗрдВрджреНрд░ рд╕реЗ рджрд╛рдПрдВ рдФрд░ рдмрд╛рдПрдВ рддрдХ ред Google рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рдирд╛рд░реЗ рд╕реЗ ViewPager рдХреЛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ "рдмреИрдХ" рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рддреБрд░рдВрдд рд╕рднреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдк рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдФрд░ рдПрдХ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдирд╣реАрдВ рд╣реИред рдкреВрд░рд╛ рд╡рд░реНрдЧ рдЖрдкрдХреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╛рдордЧреНрд░реА рд╣реИред рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдХрд╣рд╛рдВ рдФрд░ рдХреНрдпрд╛ рдЙрдард╛рдирд╛ рд╣реИред

рдЙрдкрдпреЛрдЧреА рдХрдбрд╝рд┐рдпрд╛рдБ:

  • @rmr_ рдПрдХ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдбрд╛рдЗрдСрдХреНрд╕рд╛рдЗрдб - рд░реЗрдбрдордбреНрд░рд╛рдмреЛрдЯ рдПрд╕рдкреАрдмреА рдХреЗ рдЖрдВрддрд░рд┐рдХ рдорд┐рдЯреИрдкреНрд╕ рдХреЗ рд░рд┐рдХреЙрд░реНрдбред
  • рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ GitFox рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ ред рдПрдХ рдЕрд▓рдЧ рдПрдВрдбреНрд░реЙрдЗрдб 10 рд╢рд╛рдЦрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдорд┐рд▓рд╛ рдФрд░ рдореИрдВрдиреЗ рдирдП рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛ рд╕рдорд░реНрдерди рдХреИрд╕реЗ рдХрд┐рдпрд╛ред
  • рдХреНрд░рд┐рд╕ рдмреИрди рдХреА рдЗрдирд╕реЗрдЯреНрдЯрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ред рдЗрд╕рдореЗрдВ 5-6 рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВ рдЬреЛ рдореИрдВрдиреЗ рджрд┐рдЦрд╛рдПред рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдЬреЗрдЯрдкреИрдХ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдФрд░, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╡реЗ рдмреЗрд╣рддрд░ рд╣реЛ рдЧрдПред
  • рдХреНрд░рд┐рд╕ рдмреИрди рдХрд╛ рд▓реЗрдЦ ред
  • FunCorn, , .
  • ┬лWhy would I want to fitsSystemWindows?┬╗ .

AppConf, youtube- . , - . AppsConf , . , , stay tuned!

All Articles