工具栏覆盖列表视图
Toolbar covers listview
我有一个简单的布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/abLayoutDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/BrightYellowCrayola">
<androidx.appcompat.widget.Toolbar
android:id="@+id/tbDriver"
app:navigationIcon="@drawable/baseline_menu_24"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay"
>
<androidx.appcompat.widget.SearchView
android:id="@+id/svDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:defaultQueryHint="@string/search_drivers"
app:iconifiedByDefault="false"
app:searchIcon="@null"
app:queryBackground="@android:color/transparent"
app:submitBackground="@android:color/transparent"
android:imeOptions="flagNoExtractUi"
/>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvListDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/zero_margin_when_normal"
android:paddingEnd="@dimen/zero_margin_when_normal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:layout_toEndOf="@id/abLayoutDriver"
/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabAddDriver"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:contentDescription="@string/add_driver"
android:minHeight="48dp"
android:src="@drawable/baseline_person_add_24"
app:backgroundTint="@color/BrightYellowCrayola" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
问题是在开始时,第一个列表视图自动被工具栏覆盖,我不希望它是这样的:
预期的视图应如下所示:
基本上我希望第一个项目位于工具栏下方而不必先向下滚动,我该如何实现?
这样做有用吗?
我已经将 layout_gravity:"bottom"
放到 recycleview 上以将其向下拉,将 layout_gravity:"top"
到 appbar 以将其向上拉,然后将回收视图锚定到 appbar 以便将其向下拉通过布局的引力,但必须锚定在应用栏下。
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/abLayoutDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="@color/BrightYellowCrayola"
>
<androidx.appcompat.widget.Toolbar
android:id="@+id/tbDriver"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:navigationIcon="@drawable/baseline_menu_24"
app:popupTheme="@style/AppTheme.PopupOverlay">
<androidx.appcompat.widget.SearchView
android:id="@+id/svDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="flagNoExtractUi"
app:defaultQueryHint="@string/search_drivers"
app:iconifiedByDefault="false"
app:queryBackground="@android:color/transparent"
app:searchIcon="@null"
app:submitBackground="@android:color/transparent"
/>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvListDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/zero_margin_when_normal"
android:paddingEnd="@dimen/zero_margin_when_normal"
android:layout_gravity="bottom"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_anchor="@id/abLayoutDriver"
app:layout_anchorGravity="bottom" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabAddDriver"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:contentDescription="@string/add_driver"
android:minHeight="48dp"
android:src="@drawable/baseline_person_add_24"
app:backgroundTint="@color/BrightYellowCrayola" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
尝试在您的 recyclerview 中添加以下行:
app:layout_behavior="@string/appbar_scrolling_view_behavior"
所以它看起来像这样:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvListDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/zero_margin_when_normal"
android:paddingEnd="@dimen/zero_margin_when_normal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
我有一个简单的布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/abLayoutDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/BrightYellowCrayola">
<androidx.appcompat.widget.Toolbar
android:id="@+id/tbDriver"
app:navigationIcon="@drawable/baseline_menu_24"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay"
>
<androidx.appcompat.widget.SearchView
android:id="@+id/svDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:defaultQueryHint="@string/search_drivers"
app:iconifiedByDefault="false"
app:searchIcon="@null"
app:queryBackground="@android:color/transparent"
app:submitBackground="@android:color/transparent"
android:imeOptions="flagNoExtractUi"
/>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvListDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/zero_margin_when_normal"
android:paddingEnd="@dimen/zero_margin_when_normal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:layout_toEndOf="@id/abLayoutDriver"
/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabAddDriver"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:contentDescription="@string/add_driver"
android:minHeight="48dp"
android:src="@drawable/baseline_person_add_24"
app:backgroundTint="@color/BrightYellowCrayola" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
问题是在开始时,第一个列表视图自动被工具栏覆盖,我不希望它是这样的:
预期的视图应如下所示:
基本上我希望第一个项目位于工具栏下方而不必先向下滚动,我该如何实现?
这样做有用吗?
我已经将 layout_gravity:"bottom"
放到 recycleview 上以将其向下拉,将 layout_gravity:"top"
到 appbar 以将其向上拉,然后将回收视图锚定到 appbar 以便将其向下拉通过布局的引力,但必须锚定在应用栏下。
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/abLayoutDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="@color/BrightYellowCrayola"
>
<androidx.appcompat.widget.Toolbar
android:id="@+id/tbDriver"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:navigationIcon="@drawable/baseline_menu_24"
app:popupTheme="@style/AppTheme.PopupOverlay">
<androidx.appcompat.widget.SearchView
android:id="@+id/svDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="flagNoExtractUi"
app:defaultQueryHint="@string/search_drivers"
app:iconifiedByDefault="false"
app:queryBackground="@android:color/transparent"
app:searchIcon="@null"
app:submitBackground="@android:color/transparent"
/>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvListDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/zero_margin_when_normal"
android:paddingEnd="@dimen/zero_margin_when_normal"
android:layout_gravity="bottom"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_anchor="@id/abLayoutDriver"
app:layout_anchorGravity="bottom" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabAddDriver"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:contentDescription="@string/add_driver"
android:minHeight="48dp"
android:src="@drawable/baseline_person_add_24"
app:backgroundTint="@color/BrightYellowCrayola" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
尝试在您的 recyclerview 中添加以下行:
app:layout_behavior="@string/appbar_scrolling_view_behavior"
所以它看起来像这样:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvListDriver"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/zero_margin_when_normal"
android:paddingEnd="@dimen/zero_margin_when_normal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>