9

我意识到以下内容不正确,但我想您可以将其视为伪代码。我想知道,我怎样才能将整个布局“附加”到我的 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>
4

4 回答 4

7

你可以试试 Android-ObservableScrollView。

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

于 2015-12-23T04:31:05.570 回答
6

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

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

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

                     

于 2015-12-23T04:41:13.420 回答
6

您可以使用自定义将其添加TextView为 的项目之一,或者您可以使用 a作为其内容,而不是 a因为不建议在 a 中使用一个。RecyclerViewRecyclerAdapterScrollViewLinearLayoutRecyclerViewScrollView

于 2015-12-23T04:25:28.820 回答
0

一种可能的解决方案:您可以将 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
    }
}
于 2016-03-24T07:39:52.553 回答