FAB 隐藏在底部 Sheet
FAB is hiding under Bottom Sheet
我关注XML:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/sliding_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/app_bar">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<fragment
android:id="@+id/fragment1"
android:name="com.xyz.Fragment1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
tools:layout="@layout/fragment_layout1" />
</LinearLayout>
<LinearLayout
android:id="@+id/layoutBottomSheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="@dimen/global_margin"
android:orientation="vertical"
app:layout_behavior="@string/bottom_sheet_behavior">
<fragment
android:id="@+id/fragment2"
android:name="com.xyz.Fragment2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center|top"
tools:layout="@layout/fragment_layout2" />
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/global_margin"
android:layout_marginRight="@dimen/global_margin"
android:src="@drawable/ic_add_white_24dp"
app:borderWidth="0dp"
app:elevation="4dp"
app:layout_anchor="@id/layoutBottomSheet"
app:layout_anchorGravity="top|right|end" />
</android.support.design.widget.CoordinatorLayout>
布局应显示为 Fragment1
然后在 Fragment2
下方,FAB 锚定到 Fragment2
但是 在 上方 Fragment2
而不是 在 之下。
实际上显示为,
出了什么问题?有什么想法吗?
<LinearLayout
android:id="@+id/layoutBottomSheet"
android:elevation="@dimen/global_margin"
...>
layoutBottomSheet
可能高度过高,FloatingActionButton 的默认高度是 4dp
,这就是您的按钮隐藏在较高布局后面的原因。
尝试使用低于或等于 4dp
的海拔值
您可以在 FAB 上调用 setCompatElevation(...)
,其值高于底部 sheet 高度(如果您使用 style="@style/Widget.Design.BottomSheet.Modal"
,则为 16dp)以确保它位于顶.
我在 FloatingActionBButton 中添加了 app:layout_dodgeInsetEdges="bottom" 并在具有底部 sheet 行为的视图中添加了 app:layout_insetEdge="bottom":
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="16dp"
android:clickable="true"
android:focusable="true"
app:backgroundTint="@color/white"
app:fabSize="normal"
app:layout_dodgeInsetEdges="bottom"
app:srcCompat="@drawable/icon"
/>
<View
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_insetEdge="bottom"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
/>
我关注XML:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/sliding_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/app_bar">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<fragment
android:id="@+id/fragment1"
android:name="com.xyz.Fragment1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
tools:layout="@layout/fragment_layout1" />
</LinearLayout>
<LinearLayout
android:id="@+id/layoutBottomSheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="@dimen/global_margin"
android:orientation="vertical"
app:layout_behavior="@string/bottom_sheet_behavior">
<fragment
android:id="@+id/fragment2"
android:name="com.xyz.Fragment2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center|top"
tools:layout="@layout/fragment_layout2" />
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/global_margin"
android:layout_marginRight="@dimen/global_margin"
android:src="@drawable/ic_add_white_24dp"
app:borderWidth="0dp"
app:elevation="4dp"
app:layout_anchor="@id/layoutBottomSheet"
app:layout_anchorGravity="top|right|end" />
</android.support.design.widget.CoordinatorLayout>
布局应显示为 Fragment1
然后在 Fragment2
下方,FAB 锚定到 Fragment2
但是 在 上方 Fragment2
而不是 在 之下。
实际上显示为,
出了什么问题?有什么想法吗?
<LinearLayout
android:id="@+id/layoutBottomSheet"
android:elevation="@dimen/global_margin"
...>
layoutBottomSheet
可能高度过高,FloatingActionButton 的默认高度是 4dp
,这就是您的按钮隐藏在较高布局后面的原因。
尝试使用低于或等于 4dp
您可以在 FAB 上调用 setCompatElevation(...)
,其值高于底部 sheet 高度(如果您使用 style="@style/Widget.Design.BottomSheet.Modal"
,则为 16dp)以确保它位于顶.
我在 FloatingActionBButton 中添加了 app:layout_dodgeInsetEdges="bottom" 并在具有底部 sheet 行为的视图中添加了 app:layout_insetEdge="bottom":
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="16dp"
android:clickable="true"
android:focusable="true"
app:backgroundTint="@color/white"
app:fabSize="normal"
app:layout_dodgeInsetEdges="bottom"
app:srcCompat="@drawable/icon"
/>
<View
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_insetEdge="bottom"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
/>