将 TextView 附加到 RecyclerView

Attach TextView to RecyclerView

我知道以下内容不正确,但我想您可以将其视为伪代码。我想知道,我如何才能 "attach" 将整个布局添加到我的 RecyclerView 中,这样当我向下滚动布局时,布局就会随之滚动到看不见的地方。目前 RecyclerView 上方的 TextView 固定在屏幕上,而我的 RecyclerView 中的所有数据都是可滚动的。当用户向下滚动页面时,我希望 TextView 移出视线。如果你查看 Instagram,当你向下滚动页面时,画廊顶部的所有用户个人资料信息都会消失。我怎样才能做到这一点?如何以编程方式添加 TextView?

<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>

您可以使用自定义 RecyclerAdapterTextView 添加为 RecyclerView 的项目之一,或者您可以使用带有 LinearLayoutScrollView作为其内容,而不是 RecyclerView 因为不建议在 ScrollView.

中使用一个

你可以试试Android-ObservableScrollView.

参考以下link: https://github.com/ksoichiro/Android-ObservableScrollView

我使用这两个很好的资源也做了同样的事情:

https://plus.google.com/114432517923423045208/posts/EdkQFx1RqhE

https://gist.github.com/gabrielemariotti/4c189fb1124df4556058

一种可能的解决方案: 您可以将 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
    }
}