在androidx中的FAB上方显示小吃店
作者:互联网
尝试使用androidx创建应用.
我的布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.photo.PhotoFragment">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerPhoto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_anchorGravity="top|center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:itemCount="48"
tools:layoutManager="GridLayoutManager"
tools:listitem="@layout/recycler_photo_item"
tools:spanCount="3" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/photoCoordinator"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
>
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/mainBottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:fabAlignmentMode="center"
android:backgroundTint="@color/colorPrimary"
app:fabCradleMargin="@dimen/cradle_margin"
app:fabCradleRoundedCornerRadius="@dimen/corner_radius"
app:hideOnScroll="true"
app:navigationIcon="@drawable/ic_menu_24px" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/photoFab"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_camera_alt_24px"
app:layout_anchor="@id/mainBottomAppBar" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
它看起来像是
当我显示小吃店时,它看起来像这样
谷歌说,snakebar应该显示在底部应用程序栏和工厂上方,但是当尝试以底部边距显示小吃条时我无法显示
val snackbarView = snackbar.view
val params = snackbarView.layoutParams as CoordinatorLayout.LayoutParams
params.setMargins(
params.leftMargin + marginSide,
params.topMargin,
params.rightMargin + marginSide,
params.bottomMargin + marginBottom
)
snackbarView.layoutParams = params
fab ups!
如何在晶圆厂和底部应用程序栏上方显示小吃栏?
对不起,我英文!
解决方法:
因此,您遇到的问题是Google仍未更新FAB行为以使其与新设计保持一致.由于您的FAB位于协调器布局中,并且您正在使用它来启动小吃栏,因此FAB会向上移动以适应(旧行为)
一些解决方案:
>将FAB移出协调器布局,然后将其覆盖在
应用程序栏底部的顶部及其父协调器布局
>这可能会使FAB与底部应用程序栏的任何交互混乱.这可能不是一个好的长期解决方案,因为将FAB放在协调员中通常是一个好主意
>删除FAB行为
>这将删除FAB所做的任何行为.与从协调器中删除它的缺点相同,除了它更容易撤消.出于这个原因,我比第一个更喜欢此解决方案
>您可以使用以下方式在XML中进行操作:
app.layout_behavior=""
>或使用以下代码在代码中进行操作:
CoordinatorLayout.LayoutParams params =
(CoordinatorLayout.LayoutParams)
yourView.getLayoutParams();
params.setBehavior(new AppBarLayout.ScrollingViewBehavior());
yourView.requestLayout();
看来Google仍在更新行为来源.完成后,您可能需要删除此内容,以便它可以使用其默认行为:
标签:snackbar,kotlin,floating-action-button,android 来源: https://codeday.me/bug/20191025/1924958.html