Android 使用RecyclerView折叠工具栏布局
我一直在尝试使用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
<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" />
试试这个魔兽世界!!非常非常非常感谢尝试这个魔兽世界!!非常非常非常感谢