@@ -21,9 +21,11 @@ import android.content.Context
2121import android.graphics.Bitmap
2222import android.graphics.Canvas
2323import android.graphics.Color
24+ import android.graphics.Insets
2425import android.graphics.Paint
2526import android.graphics.drawable.BitmapDrawable
2627import android.graphics.drawable.Drawable
28+ import android.os.Build
2729import android.util.AttributeSet
2830import android.util.DisplayMetrics
2931import android.util.TypedValue
@@ -33,6 +35,7 @@ import android.view.KeyEvent
3335import android.view.LayoutInflater
3436import android.view.View
3537import android.view.ViewGroup
38+ import android.view.WindowInsets
3639import android.widget.FrameLayout
3740import android.widget.LinearLayout
3841import androidx.annotation.ColorInt
@@ -234,10 +237,25 @@ class Toolbar : FrameLayout {
234237 private val screenWidth: Int
235238 get() {
236239 val displayMetrics = DisplayMetrics ()
237- (context as Activity )
238- .windowManager
239- .defaultDisplay
240- .getMetrics(displayMetrics)
240+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .R ) {
241+ val windowMetrics =
242+ (context as Activity )
243+ .windowManager
244+ .currentWindowMetrics
245+ val windowInsets: WindowInsets = windowMetrics.getWindowInsets()
246+ val insets: Insets =
247+ windowInsets.getInsetsIgnoringVisibility(
248+ WindowInsets .Type .navigationBars()
249+ or WindowInsets .Type .displayCutout(),
250+ )
251+ val insetsWidth: Int = insets.right + insets.left
252+ displayMetrics.widthPixels = windowMetrics.bounds.width() - insetsWidth
253+ } else {
254+ (context as Activity )
255+ .windowManager
256+ .defaultDisplay
257+ .getMetrics(displayMetrics)
258+ }
241259 return displayMetrics.widthPixels
242260 }
243261
0 commit comments