问题描述
采用以下布局
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EEEEEE">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomAppbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:backgroundTint="#4E342E"
app:contentInsetStart="0dp"
app:fabAlignmentMode="end"
app:fabCradleMargin="8dp"
app:fabCradleRoundedCornerRadius="32dp"
app:hideOnScroll="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="#4E342E"
app:elevation="0dp"
app:itemIconTint="#F48FB1"
app:itemTextColor="#F48FB1"
app:labelVisibilityMode="unlabeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent=".72"
app:menu="@menu/main" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.bottomappbar.BottomAppBar>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:backgroundTint="#D81B60"
app:layout_anchor="@id/bottomAppbar"
app:srcCompat="@drawable/ic_favorite"
app:tint="@color/white" />
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="256dp"
android:background="#f00"
android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsingToolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff0"
app:contentScrim="@android:color/holo_purple"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/ivHeader"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/header"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.7" />
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:menu="@menu/main"
app:title="Hello World" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
并在视图层次结构中的每个项目中调用消耗内部插入
appbar?.setOnApplyWindowInsetsListener { view,insets ->
insets.consumeSystemWindowInsets()
view.updatePadding(top = insets.systemWindowInsetTop)
println("? Appbar padding: ${view.paddingTop},inset top: ${insets.systemWindowInsetTop}," +
"isConsumed: ${insets.isConsumed}")
insets
}
collapsingToolbar?.setOnApplyWindowInsetsListener { view,insets ->
view.updatePadding(top = insets.systemWindowInsetTop)
insets.consumeSystemWindowInsets()
println("? collapsingToolbar padding: ${view.paddingTop}," +
"isConsumed: ${insets.isConsumed}")
insets
}
ivHeader?.setOnApplyWindowInsetsListener { view,insets ->
// view.updatePadding(top = insets.systemWindowInsetTop)
println("? ivHeader padding: ${view.paddingTop},"+
"isConsumed: ${insets.isConsumed}")
insets
}
bottomAppbar?.setOnApplyWindowInsetsListener { view,insets ->
println("? bottomAppbar padding: ${view.paddingTop},inset bottom: ${insets.systemWindowInsetTop}," +
"isConsumed: ${insets.isConsumed}")
insets.consumeSystemWindowInsets()
// view.updatePadding(bottom = insets.systemWindowInsetBottom)
insets
}
// Add padding to bottom of BottomNavigationView to display it above NavigationBar
val bottomNav = findViewById<BottomNavigationView>(R.id.bottomNavigationView)
bottomNav.setOnApplyWindowInsetsListener { view,insets ->
view.updatePadding(bottom = 0)
insets.consumeSystemWindowInsets()
println("? BottomNav padding bottom: ${view.paddingTop}," +
"isConsumed: ${insets.isConsumed}")
insets
}
哪些印刷品
I: ? bottomAppbar padding: 0,inset bottom: 83,isConsumed: false
I: ? BottomNav padding bottom: 0,isConsumed: false
I: ? Appbar padding: 83,inset top: 83,isConsumed: false
I: ? collapsingToolbar padding: 83,isConsumed: false
I: ? ivHeader padding: 0,isConsumed: false
I: ? bottomAppbar padding: 0,isConsumed: false
即使我打电话给消费,为什么不插入任何setOnApplyWindowInsetsListener
中的消费。
编辑
已将消耗的插图添加到日志中,但没有一个显示0以外的任何值。
? bottomAppbar padding: 0,inset bottom: 83isConsumed: false
I: consumedInsets: WindowInsets{systemWindowInsets=Insets{left=0,top=0,right=0,bottom=0} stableInsets=Insets{left=0,bottom=0} sysGestureInsets=Insets{left=0,bottom=0}}
I: ? BottomNav padding bottom: 0,bottom=0}}
I: ☕️ Fab padding bottom: 0,inset bottom: 83
I: consumedInsets: WindowInsets{systemWindowInsets=Insets{left=0,bottom=0}}
I: ? Appbar padding: 83,inset top: 83isConsumed: false
I: consumedInsets: WindowInsets{systemWindowInsets=Insets{left=0,bottom=0}}
I: ? collapsingToolbar padding: 83,bottom=0}}
I: ? ivHeader padding: 0,bottom=0}}
I: ? bottomAppbar padding: 0,bottom=0}}
I: ☕️ Fab padding bottom: 42,bottom=0}}
如何为BottomAppBar和AppBarLayout修复插图?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)