android - Fab 没有被底部导航上方的小吃店向上推
问题描述
(这个错误是在一个大项目中发生的,所以我做了一个小的以便于演示)
我一直在为这个问题苦苦挣扎一段时间,我只是无法在任何地方找到答案
当显示 Snackbar 时,我想推高晶圆厂。当底部导航栏被移除并显示一个小吃栏时,晶圆厂被向上推。但是当我插入底部导航栏时,出现了snackbar,但是fab没有被向上推
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
app:layout_anchor="@id/bar"
app:layout_anchorGravity="bottom|end" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:background="@color/design_default_color_secondary"
android:id="@+id/bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_insetEdge="bottom"
android:layout_gravity="bottom"
app:menu="@menu/menu"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
Snackbar
.make(it, "tttt", Snackbar.LENGTH_LONG)
.setAnchorView(findViewById(R.id.bar))
.show()
}
}
}
提前致谢 :)
解决方案
将底部导航移动到另一个布局并将 CoordinatorLayout 包裹在线性布局中,现在小吃店应该以 CoordinatorLayout 为根,并且 CoordinatorLayout 将在底部有 fab,所以当小吃到来时它会抬起它。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/snackRoot"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:src="@drawable/ic_android_circle" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/design_default_color_secondary"
app:layout_insetEdge="bottom"
app:menu="@menu/menu" />
</LinearLayout>
显示小吃店
Snackbar
.make(activity.findViewById(R.id.snackRoot),
"tttt",
Snackbar.LENGTH_LONG)
.show()
推荐阅读
- javascript - jQuery - $.post 延迟对象数组的协调事件处理程序
- sql-server - 一次查询更新多个表
- vba - 使用 VBA 在 MS Project 中返回给定任务 ID 的字段值
- python - 如何在 Python 中将列表重命名为变量
- apache-spark - Spark读取从--files提交的csv文件
- node.js - 确定如何使用 NodeJS/Mongoose 进行授权
- php - 我如何将正确类型的对象或数组发送到 curl 函数
- angular-material - Angular Material:复选框的mat-checkbox垂直对齐
- java - java.lang.IllegalStateException:无法转换名为 UnitySaveFCPort$PortMetric.Reason 的类:[源错误]构造函数不能是静态的
- php - Laravel Ajax 数据中的数组到字符串