2015-12-23 73 views
9

我知道以下內容不正確,但我想您可以將其視爲僞代碼。我想知道,我怎樣才能將整個佈局「附加」到我的RecyclerView,以便當我向下滾動佈局時,滾動畫面不再顯示。目前,RecyclerView上方的TextView固定在屏幕上,而我的RecyclerView中的所有數據都是可滾動的。當用戶向下滾動頁面時,我希望TextView移出視線。如果您查看Instagram,當您向下滾動頁面時,圖庫頂部的所有用戶個人資料信息都會消失。我怎樣才能做到這一點?我如何以編程方式添加TextView?將TextView附加到RecyclerView

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Hello!" /> 

<android.support.v7.widget.RecyclerView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_marginBottom="?android:attr/actionBarSize" 
    android:padding="@dimen/item_margin" 
    android:id="@+id/recycler_view" 
    android:clipToPadding="false"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:text="Hello!" /> 

</android.support.v7.widget.RecyclerView> 
+1

試試這個方法:https://github.com/chrisbanes/cheesesquare –

+1

[RecyclerView頁眉和頁腳(可能的重複http://stackoverflow.com/questions/26585941/recyclerview-header-and-頁腳) – starkshang

+0

https://github.com/blipinsk/RecyclerViewHeader –

回答

6

您可以添加TextView作爲RecyclerView的項目之一使用自定義RecyclerAdapter或者你可以使用一個ScrollViewLinearLayout作爲其內容,而不是RecyclerView,因爲它不是建議使用一個內部的ScrollView

+0

我明白了......我真的不想從RecyclerView中改變,因爲我已經深深紮根於它,它似乎更符合我的目的。我想我會考慮以編程方式添加TextView。 – santafebound

+0

@bluemunch肯定會很有效。 –

0

一個possib le解決方案: 您可以將TextView作爲RecyclerView的項目之一,但它會有不同的外觀。

@Override 
public int getItemViewType(int position) { 
    if (position == 0) { 
     return HEADER; 
    } else { 
     return NORMAL_ITEM; 
    } 
} 

@Override 
public StandardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    if (viewType == HEADER) { 
     //inflate your textview layout header. Create a viewholder     //for it 
    } else { 
     // inflate normal layour 
    } 
} 

@Override 
public void onBindViewHolder(final ViewHolder holder, final int position) { 
    if (getItemViewType(position) == HEADER) { 
     // BIND header View 
    } else { 
     //BIND NormalView 
    } 
}