我有一个带有一个“活动,很多片段”模型的应用程序,其中几个片段都有一个RecyclerView来显示带有内容的卡片。我还实现了Material Design 2.0中的BottomAppBar,一切正常,除非AppBar阻止了RecyclerView中的最后一个CardView。
在布局方面,我在Fragment的ConstraintLayout内有一个RecyclerView,它位于主活动的FrameLayout中。
文档显示,要在滚动we need to implement RecyclerView inside a NestedScrollView上隐藏BottomAppBar。 one question here on SO的答案也是如此,但是似乎没有实际的文档或示例来演示如何完成此操作,除了this article on Medium之外,该文档中使用NestedScrollView直接进行活动,并持有一个包含ConstraintLayout的CoordinatorLayout。
注意:我认为它也可以在魔术上起作用,因为复制片段中的布局对我的应用程序根本没有任何作用。
如何在此处使用NestedScrollView?
PS:我需要拥有TextView,因为当我没有数据要显示时,我将RecyclerView设置为VISIBILITY.GONE并将TextView设置为VISIBLE。
片段布局
<android.support.constraint.ConstraintLayout 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:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.domain.APPNAME.Fragments.FragmentList">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerViewIncident"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="30dp"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<TextView
android:id="@+id/emptyView"
android:layout_width="wrap_content"
android:layout_height="17dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="No Incidents to display"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.503"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
活动布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.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"
android:id="@+id/uberLayout"
tools:context=".APPNAME">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/containerFrameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</android.support.constraint.ConstraintLayout>
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.bottomappbar.BottomAppBar
android:id="@+id/bottom_app_bar"
style="@style/Widget.MaterialComponents.BottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:backgroundTint="@color/colorPrimary"
app:fabAlignmentMode="center"
app:navigationIcon="@drawable/baseline_menu_white_24dp"
app:hideOnScroll="true"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
</android.support.design.bottomappbar.BottomAppBar>
<android.support.design.widget.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:clickable="true"
android:src="@drawable/baseline_add_white_24dp"
app:backgroundTint="@color/brightred"
app:fabSize="normal"
app:layout_anchor="@+id/bottom_app_bar"
tools:layout_editor_absoluteX="160dp"
tools:layout_editor_absoluteY="465dp" />
</android.support.design.widget.CoordinatorLayout>
</android.support.design.widget.CoordinatorLayout>
答案 0 :(得分:1)
您不应将Private Sub RemoveMergeSheet()
On Error Resume Next
ActiveWorkbook.Worksheets("RDBMergeSheet").Delete
End Sub
和BottomAppBar
放在单独的FloatingActionButton
中。将CoordinatorLayout
插入其中,CoordinatorLayout
放在您的ConstraintLayout
周围,这可能已经解决了问题。
FrameLayout
我使用的布局相似,唯一的区别是<?xml version="1.0" encoding="utf-8"?>
<android.support.design.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"
android:id="@+id/uberLayout"
tools:context=".APPNAME">
<FrameLayout
android:id="@+id/containerFrameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<android.support.design.bottomappbar.BottomAppBar
android:id="@+id/bottom_app_bar"
style="@style/Widget.MaterialComponents.BottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:backgroundTint="@color/colorPrimary"
app:fabAlignmentMode="center"
app:navigationIcon="@drawable/baseline_menu_white_24dp"
app:hideOnScroll="true"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:src="@drawable/baseline_add_white_24dp"
app:backgroundTint="@color/brightred"
app:fabSize="normal"
app:layout_anchor="@+id/bottom_app_bar" />
</android.support.design.widget.CoordinatorLayout>
而不是<fragment>
,并且BottomAppBar在滚动时很好地隐藏了。如果我们的滚动内容仍然是<FrameLayout>
,则无需使用NestedScrollView
,因为RecyclerView
实现了NestedScrollingChild。
此接口应由希望支持将嵌套滚动操作分派给协作的父级ViewGroup的View子类实现。