Прикрепить TextView к RecyclerView

Я понимаю, что следующее неверно, но я полагаю, вы можете рассматривать его как псевдокод. Мне интересно, как я могу "прикрепить" весь макет к моему RecyclerView, чтобы при прокрутке вниз макет прокручивался из поля зрения вместе с ним. В настоящее время TextView над RecyclerView фиксируется на экране, тогда как все данные в моем 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 ответов


Я сделал то же самое, используя эти два больших ресурса:

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

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


вы можете попробовать Android-ObservableScrollView.

см. следующую ссылку: https://github.com/ksoichiro/Android-ObservableScrollView


вы можете добавить, что TextView в одном из RecyclerView's элементы с помощью пользовательского RecyclerAdapter или вы можете использовать ScrollView С LinearLayout как его содержание, а не RecyclerView поскольку не рекомендуется использовать один внутри ScrollView.


одно из возможных решений: Вы можете рассматривать 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
    }
}