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