android - Bottom Sheet 和FAB边距

标签 android margin floating-action-button bottom-sheet

如何在Android的 Bottom Sheet 和 float 操作按钮之间添加边距。我通过使用另一个FAB使其不可见来使其工作,但FAB仅在 Bottom Sheet 上方。看到这张图片:1

和代码:

<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:theme="@style/Theme.AppCompat.NoActionBar"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<RelativeLayout
    android:id="@+id/search_relativeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:theme="@style/Theme.AppCompat.NoActionBar">

    <com.google.android.gms.maps.MapView
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

<android.support.v4.widget.NestedScrollView
    android:id="@+id/bottom_sheet"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:background="@android:color/white"
    android:elevation="1dp"
    app:behavior_hideable="true"
    app:behavior_peekHeight="0dp"
    app:layout_behavior="@string/bottom_sheet_behavior">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/circle_picture"
            android:src="@mipmap/login_background"
            android:layout_margin="10dp"
            android:layout_width="50dp"
            android:layout_height="50dp" />
        <TextView
            android:id="@+id/name_bottom_sheet"
            android:layout_toEndOf="@id/circle_picture"
            android:text="Title"
            android:textColor="@color/buttonLoginColor"
            android:layout_margin="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <TextView
            android:id="@+id/address_bottom_sheet"
            android:layout_below="@id/name_bottom_sheet"
            android:layout_toEndOf="@id/circle_picture"
            android:layout_marginStart="10dp"
            android:textColor="@color/btn_create"
            android:text=""
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </RelativeLayout>
</android.support.v4.widget.NestedScrollView>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="invisible"
    android:layout_margin="15dp"
    app:layout_anchor="@id/bottom_sheet"
    app:layout_anchorGravity="top|end"/>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/floatingButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="50dp"
    android:layout_marginEnd="15dp"
    app:backgroundTint="@color/buttonLoginColor"
    app:borderWidth="0dp"
    app:elevation="6dp"
    app:layout_anchor="@id/fab2"
    app:layout_anchorGravity="top"/>

</android.support.design.widget.CoordinatorLayout>

我正在使用NestedScrollView显示 Bottom Sheet 。

最佳答案

我遇到过同样的问题。经过数小时的研究,由于 Material 设计准则,我发现无法通过layout_anchor进行制作。您需要使用以下技巧。我使用的是透明 View ,该 View 可在fab和 Bottom Sheet 内容 View 之间留出一定的余量。

这是我解决问题的方法:

FAB本身:

<android.support.design.widget.FloatingActionButton
    ...
    app:layout_anchor="@+id/bottomPanel"
    app:layout_anchorGravity="right"/>

Bottom Sheet :
<FrameLayout
    android:id="@+id/bottomPanel"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:backgound="@android:color/transparent"
    app:layout_behavior="@string/bottom_sheet_behavior">

    <ContentView
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_marginTop="44dp"
        android:backgound="@color/colorPrimary" />

</FrameLayout>

只需使根 View 透明,然后将内容 View 放入其中,并增加44dp的余量(晶圆厂大小= 56dp。晶圆厂填充=16dp。56/2 + 16 = 44)

关于android - Bottom Sheet 和FAB边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42947987/

相关文章:

android - Gradle 0.9.+/0.9.2 错误 : Unable to load class 'com.android.builder.testing.api.DeviceProvider'

Android:如何模拟后退按钮

css - 为什么 scale CSS 变换函数不影响边距?

reactjs - react 导航全局 FAB

android - float 操作按钮行为随机

java - 如何修复 API 版本 23 的 androidx 中的 FloatingActionButton 膨胀错误?

Android:OneSignal 如何使用自定义图标或应用程序图标更改通知账单图标?

android - displayImage 和 loadImage 缓存的不是同一个文件?

html - 如何在右侧列出图标并在每个图标下方相应地显示文字?

html - 为什么添加溢出: hidden make the child element's margin work?