简体   繁体   English

使用RecyclerView折叠工具栏

[英]CollapsingToolbarLayout with RecyclerView

I've been attempting to implement a CollapsingToolbar with a RecyclerView using 我一直在尝试使用RecyclerView实现CollapsingToolbar

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="48dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <ImageView
            android:id="@+id/imageView_list"
            android:layout_width="match_parent"
            android:layout_height="275dp"
            app:layout_collapseMode="parallax"
            android:fitsSystemWindows="true"
            android:scaleType="fitXY"
            android:src="@mipmap/bg_profile_01" />

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/list"/>
</android.support.design.widget.CoordinatorLayout>

list.xml list.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="vertical">
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/item_img"
    android:adjustViewBounds="true"
    />
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/item_txt"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:layout_centerInParent="true"
    />

Adapter 适配器

public class ViewAdapter extends RecyclerView.Adapter<ViewAdapter.ViewHolder> {

Context context;
private List<ViewModel> items;
private int itemLayout;

public ViewAdapter(Context context,List<ViewModel> items,int itemLayout) {
    this.context = context;
    this.items = items;
    this.itemLayout = itemLayout;
}

@Override
public int getItemCount() {
    return items.size();
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    ViewModel item = items.get(position);
    holder.itemView.setTag(item);
    holder.text.setText(item.getTitle());

}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false);
    /*if(parent.getHeight() > 0){
        view.getLayoutParams().height = parent.getHeight() / 6;
    }*/
    ViewHolder vh = new ViewHolder(view, new ViewHolder.AdapterClickListener() {
        @Override
        public void onAadapterItemClick(View view, int position) {
            items.remove(position);
            notifyItemRemoved(position);
        }
    });
    return  vh;
}


public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    public ImageView image;
    public TextView text;
    public AdapterClickListener adapterClickListener;

    public ViewHolder(View itemView, AdapterClickListener adapterClickListener) {
        super(itemView);
        this.adapterClickListener = adapterClickListener;
        image = (ImageView)itemView.findViewById(R.id.item_img);
        text=(TextView)itemView.findViewById(R.id.item_txt);
        itemView.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        adapterClickListener.onAadapterItemClick(v, getAdapterPosition());
    }

    public static interface AdapterClickListener {
        public void onAadapterItemClick(View view, int position);
    }
}

main 主要

private void init(){
    recyclerView = (RecyclerView)findViewById(R.id.list);
    recyclerView.setHasFixedSize(true);
    recyclerView.setAdapter(new ViewAdapter(getApplicationContext(), CreateItemList(), R.layout.item_list));
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

}

private List<ViewModel> CreateItemList(){
    List<ViewModel> items = new ArrayList<ViewModel>();
    for(int i=0;i<20;i++){
        ViewModel model = new ViewModel();
        model.setTitle("title_" + i);

        items.add(model);
    }
    return items;
}

But RecyclerView occupies the entire screen 但RecyclerView占据整个屏幕

I don't know when it started to go wrong. 我不知道它何时开始出问题。

I'm sorry I`m not good at English ㅠ_ㅠ 对不起,我不擅长英语ㅠ_ㅠ

Just add : app:layout_behavior="@string/appbar_scrolling_view_behavior" to your Recycler View . 只需将: app:layout_behavior="@string/appbar_scrolling_view_behavior"到您的Recycler View

It will look like this : 它看起来像这样:

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/list"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 CoordinatorLayout与RecyclerView和CollapsingToolbarLayout - CoordinatorLayout with RecyclerView & CollapsingToolbarLayout CollapsingToolbarLayout 和 RecyclerView 的滚动问题 - Scrolling issue with CollapsingToolbarLayout and RecyclerView CollapsingToolbarLayout扩展无法与RecyclerView一起使用 - CollapsingToolbarLayout expansion not working with RecyclerView CollapsingToolbarLayout中的选项卡重叠RecyclerView - Tabs in CollapsingToolbarLayout overlapping RecyclerView 折叠工具栏布局回收器视图单独工作 - collapsingtoolbarlayout recyclerview working separately CollapsingToolbarLayout 在 RecyclerView 滚动时折叠不一致 - CollapsingToolbarLayout collapses inconsistently on RecyclerView scroll 如何在CollapsingToolbarLayout中滚动Recyclerview - How to scroll Recyclerview inside CollapsingToolbarLayout CollapsingToolbarLayout不显示RecyclerView - CollapsingToolbarLayout doesn't show the RecyclerView RecyclerView或CollapsingToolbarLayout中的WebView如何滚动? - WebView in RecyclerView or CollapsingToolbarLayout how to scroll? 更新后,CollapsingToolbarLayout出现在RecyclerView下 - CollapsingToolbarLayout is appearing under RecyclerView when updated
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM