Прикрепить 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
}
}