CoordinatorLayout重叠

看看下面的布局。 你会看到,浮动button离底部太远了。 这是因为显示工具栏和选项卡,并且ViewPager的高度是错误的。 所以不知何故,我做了layout_height错误。 但是我怎么能解决这个问题呢?

备注:ViewPager是主要内容,它包含一个带有ListView和第二个选项卡中的Google Map V2的片段。

浮动按钮太低

这是布局XML:

<?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" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" /> <android.support.design.widget.TabLayout android:id="@+id/sliding_tabs" android:layout_width="match_parent" android:layout_height="wrap_content"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/pager_list_views" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_width="match_parent" android:layout_height="fill_parent"> </android.support.v4.view.ViewPager> </android.support.design.widget.CoordinatorLayout> 

以下是第一个选项卡(列表)中片段的布局:

 <?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" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/preview_list" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_width="match_parent" android:layout_height="match_parent" android:choiceMode="singleChoice" android:orientation="vertical" /> <android.support.design.widget.FloatingActionButton android:id="@+id/action_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:layout_margin="16dp" android:src="@mipmap/ic_add_white_48dp" /> </android.support.design.widget.CoordinatorLayout> 

只想确认一下; 这不是FAB的问题。 看到这张照片。 这是一个类似的布局。 带有ToolBar和ViewPager的CoordinatorLayout,通过所有细节条目(因此不需要标签)。 再次,内部视图似乎太长(与工具栏相同的高度)。

在这里输入图像说明

Solutions Collecting From Web of "CoordinatorLayout重叠"

  1. 你应该使用android.support.v7.widget.RecyclerView而不是ListView
  2. 虽然你已经使用android.support.v7.widget.RecyclerView 100%确定你已经在你的build.gradle依赖关系中声明了compile 'com.android.support:recyclerview-v7:23.0.0' 。 我遇到了viewpager与系统button重叠的问题。 我通过简单地添加这个依赖项来修复它。

任何你要“协调”的都需要CoordinatorLayout 直接子,包括AppBarRecyclerView (API21 +中的ListView或其他视图支持嵌套滚动可以),或者FAB等。

你的FAB被屏蔽掉的原因是:

  1. ViewPager有一个@string/appbar_scrolling_view_behavior ,这个行为的实现会在你滚动的时候偏移视图。
  2. 你把FAB里面的ViewPager

所以当ViewPager的偏移量发生变化时, ViewPager任何ViewPager都会一起抵消(额外的CoordinatorLayout无助于改变偏移量)。

要解决这个问题,请不要在ViewPager外部使用CoordinatorLayout

要么:

  1. 将您的FABViewPager移出,以便它不会随ViewPager滚动。
  2. 如果FAB只与您的某些页面一起工作,则在需要时hide()它。

顺便说一句,有很好的App, Cheesesquare Sample ,来演示devise库。