Прикрепить 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
предметы с использованием пользовательских 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
}
}