0

编辑:全码RecyclerView和工具栏,不能滚动底部项目眼帘

Using the Master/Detail template in ViewPager Fragments (download link)我有一个工具栏和recyclerView。当布局第一次充气时,recyclerView的最后一项不在屏幕的可滚动区域内,因此不可见。出现旋转项目后。很明显,工具栏正在推动屏幕边界外的recyclerView。如果我通过工具栏的高度将填充添加到recyclerView的底部,问题就解决了,但仅适用于布局的初始膨胀。旋转后,我留下一个在屏幕底部的差距。我正在使用sdk 23.

可能的解决方法是以编程方式在布局第一次膨胀后删除填充。我认为我可以使用:

但是,我宁愿不必做一个可怕的变通。

我的应用程序基本上与Android Studio中提供的主/细节流模板完全相同,只是我使用了片段和单个Activity。模板中没有这样的问题。

任何想法?

fragment_item_list.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" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <FrameLayout 
     android:id="@+id/frameLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <include layout="@layout/item_list" /> 
    </FrameLayout> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@android:drawable/ic_dialog_email" /> 


</android.support.design.widget.CoordinatorLayout> 

item_list.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.RecyclerView 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/item_list" 
    android:name="com.idragonit.scrolltabs.ItemListFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginLeft="16dp" 
    android:layout_marginRight="16dp" 
    app:layoutManager="LinearLayoutManager" 
    tools:context="com.idragonit.scrolltabs.ItemListActivity" 
    tools:listitem="@layout/item_list_content" /> 

item_list_content.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/id" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/text_margin" 
     android:textAppearance="?attr/textAppearanceListItem" /> 

    <TextView 
     android:id="@+id/content" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/text_margin" 
     android:textAppearance="?attr/textAppearanceListItem" /> 
</LinearLayout> 

ItemListFragment.java的片断

Toolbar toolbar = (Toolbar) root.findViewById(R.id.toolbar); 
toolbar.setTitle("List"); 
+0

为什么你对FrameLayout里,而不是在RecyclerView行为? – Tristan

+0

当您滚动RecyclerView时,您的工具栏是否会折叠? –

+0

否。工具栏已修复。只有工具栏。 http://i67.tinypic.com/o0sdhs.png –

回答

0
<?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:background="@color/white" 
    android:orientation="vertical"> 

    <android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/item_list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dp" 
     android:scrollbars="vertical" /> 


    </LinearLayout> 

    <android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_gravity="bottom|right" 
    android:layout_marginBottom="@dimen/activity_vertical_margin" 
    android:layout_marginRight="@dimen/activity_horizontal_margin" 
    android:src="@drawable/ic_add" 
    app:backgroundTint="@color/colorPrimary" /> 

</android.support.design.widget.CoordinatorLayout> 
+0

你能解释一下这些变化吗? –

0

我说:

android:layout_gravity="fill_vertical" 
android:layout_marginBottom="?attr/actionBarSize" 

到item_list.xml。问题依然存在。布局第一次膨胀时,它显示了预期的底部元素。在旋转到横向并返回到纵向后,它会在屏幕底部留下与操作栏大小相同的边距。

在Android Studio中可用的主/细节流模板中没有发生此问题,item_list.xml,item_list_twopane.xml和activity_item_list的代码与item_list.xml中使用的代码完全相同,land/item_list .xml和fragment_item_list.xml在我的项目中。然而,如附图所示,AppBar的预览显示了Android模板中的灵活空间,但不是我的代码。

编辑:当我点击模板中的“?attr/actionBarSize”引用时,它将导航到android SDK的values.xml中的不同行,该行以<declare-styleable name="AppCompatTheme">开头。我的应用程序中的同一行代码引用了从<declare-styleable name="Theme">开始的不同行。

截图: My App
Android Template