Android 使用RecyclerView折叠工具栏布局

Android 使用RecyclerView折叠工具栏布局,android,Android,我一直在尝试使用RecyclerView实现一个折叠工具栏 <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

我一直在尝试使用RecyclerView实现一个折叠工具栏

<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

 <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"
    />

适配器

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);
    }
}
公共类ViewAdapter扩展了RecyclerView.Adapter{ 语境; 私人清单项目; 私人空间布局; 公共ViewAdapter(上下文上下文、列表项、int itemLayout){ this.context=上下文; 这个项目=项目; this.itemLayout=itemLayout; } @凌驾 public int getItemCount(){ 返回items.size(); } @凌驾 公共无效onBindViewHolder(ViewHolder,int位置){ ViewModel item=items.get(位置); holder.itemView.setTag(项目); holder.text.setText(item.getTitle()); } @凌驾 public ViewHolder onCreateViewHolder(视图组父级,int-viewType){ View=LayoutFlater.from(parent.getContext()).inflate(itemLayout,parent,false); /*if(parent.getHeight()>0){ view.getLayoutParams().height=parent.getHeight()/6; }*/ ViewHolder vh=新的ViewHolder(视图,新的ViewHolder.AdapterClickListener(){ @凌驾 公用空心适配器单击(视图,int位置){ 项目。移除(位置); 已移除(位置)的项目; } }); 返回vh; } 公共静态类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{ 公众形象; 公共文本查看文本; 公共适配器ClickListener适配器ClickListener; 公共视图持有者(视图项视图、AdapterClickListener AdapterClickListener){ 超级(项目视图); this.adapterClickListener=adapterClickListener; image=(ImageView)itemView.findViewById(R.id.item\u img); text=(TextView)itemView.findViewById(R.id.item_txt); setOnClickListener(这个); } @凌驾 公共void onClick(视图v){ onAdapterClickListener.onAdapterItemClick(v,getAdapterPosition()); } 公共静态接口适配器ClickListener{ 公用适配器单击(视图,int位置); } } 主要

private void init(){
recyclerView=(recyclerView)findViewById(R.id.list);
recyclerView.setHasFixedSize(true);
setAdapter(新的ViewAdapter(getApplicationContext(),CreateItemList(),R.layout.item_list));
setItemAnimator(新的DefaultItemAnimator());
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
}
私有列表CreateItemList(){
列表项=新建ArrayList();

对于(int i=0;i只需将:
app:layout\u behavior=“@string/appbar\u scrolling\u view\u behavior”
添加到回收器视图中即可

它将如下所示:

<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" />

只需将:
app:layout\u behavior=“@string/appbar\u scrolling\u view\u behavior”
添加到回收器视图中即可

它将如下所示:

<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" />


试试这个魔兽世界!!非常非常非常感谢尝试这个魔兽世界!!非常非常非常感谢