底页和 FAB 边距
Posted
技术标签:
【中文标题】底页和 FAB 边距【英文标题】:Bottom Sheet and FAB margin 【发布时间】:2017-08-14 08:25:42 【问题描述】:如何在 android 的底部工作表和浮动操作按钮之间添加边距。我通过使用另一个 FAB 并使其不可见来使其工作,但 FAB 仅位于底部表上方。看这张图:1
还有代码:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_
android:layout_
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_
android:layout_
android:theme="@style/Theme.AppCompat.NoActionBar">
<com.google.android.gms.maps.MapView
android:id="@+id/mapView"
android:layout_
android:layout_ />
</RelativeLayout>
<android.support.v4.widget.NestedScrollView
android:id="@+id/bottom_sheet"
android:layout_
android:layout_
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_
android:layout_
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circle_picture"
android:src="@mipmap/login_background"
android:layout_margin="10dp"
android:layout_
android:layout_ />
<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_
android:layout_ />
<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_
android:layout_ />
</RelativeLayout>
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab2"
android:layout_
android:layout_
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_
android:layout_
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 来显示底部工作表。
【问题讨论】:
您能否显示此布局的完整 XML 以帮助您更好地理解?一些如何通过相对或坐标布局来实现这一点 我正在使用协调器布局是的。我编辑了我的问题。 是的,RelativeLayout 会起作用,你可以试试看,如果你觉得它有用,别忘了把它标记为 true,谢谢。 【参考方案1】:是的,你可以试试 RelativeLayout
,我还是不明白你为什么给底片固定高度 300dp,不管怎样,这不需要另一个 fab 按钮就可以做到。..
<RelativeLayout
android:id="@+id/coordinator"
android:layout_
android:layout_
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_
android:layout_
android:theme="@style/Theme.AppCompat.NoActionBar">
<com.google.android.gms.maps.MapView
android:id="@+id/mapView"
android:layout_
android:layout_ />
</RelativeLayout>
<android.support.v4.widget.NestedScrollView
android:id="@+id/bottom_sheet"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
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_
android:layout_
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circle_picture"
android:src="@mipmap/login_background"
android:layout_margin="10dp"
android:layout_
android:layout_ />
<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_
android:layout_ />
<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_
android:layout_ />
</RelativeLayout>
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/floatingButton"
android:layout_
android:layout_
android:layout_above="@+id/bottom_sheet"
android:layout_margin="15dp"
app:backgroundTint="@color/buttonLoginColor"
app:borderWidth="0dp"
android:layout_alignParentRight="true"
app:elevation="6dp"
app:layout_anchorGravity="top"/>
</RelativeLayout>
您还可以根据需要设置您的晶圆厂按钮边距。
【讨论】:
当底部工作表处于扩展状态时,我希望它的高度仅为 300dp。另外,我不能使用相对布局作为父视图,因为具有行为的视图必须是 CoordinatorLayout 的直接子视图 所以你想相应地将 Fab 按钮向上移动 Nested Scroll View ?这就是你使用 CoordinatorLayout..right 的原因? 是的,我想在 FAB 和底页之间留一个空间。但是填充不起作用【参考方案2】:我遇到了同样的问题。经过数小时的研究,我发现由于材料设计指南,它不能通过 layout_anchor 制作。您需要使用以下技巧。我正在使用一个透明视图,它在 fab 和底部工作表内容视图之间留有边距。
这就是我解决问题的方法:
FAB 本身:
<android.support.design.widget.FloatingActionButton
...
app:layout_anchor="@+id/bottomPanel"
app:layout_anchorGravity="right"/>
底页:
<FrameLayout
android:id="@+id/bottomPanel"
android:layout_
android:layout_
android:backgound="@android:color/transparent"
app:layout_behavior="@string/bottom_sheet_behavior">
<ContentView
android:layout_
android:layout_
android:layout_marginTop="44dp"
android:backgound="@color/colorPrimary" />
</FrameLayout>
只需使根视图透明并将内容视图放入其中并添加 44dp 的边距(fab size = 56dp.fab padding = 16dp.56/2 + 16 = 44)
【讨论】:
以上是关于底页和 FAB 边距的主要内容,如果未能解决你的问题,请参考以下文章
xml 如何为所有Android版本修复奇怪的FAB底部边距。
xml 如何为所有Android版本修复奇怪的FAB底部边距。
xml 如何为所有Android版本修复奇怪的FAB底部边距。
xml 如何为所有Android版本修复奇怪的FAB底部边距。