Android嵌套RecyclerView左右滑动替代自定义view

Android嵌套RecyclerView左右滑动替代自定义view,第1张

概述以前的左右滑动效果采用自定义scrollview或者linearlayout来实现,recyclerview可以很好的做这个功能,一般的需求就是要么一个独立的左右滑动效果,要么在一个列表里的中间部分一个左右滑动效果

以前的左右滑动效果采用自定义scrollvIEw或者linearlayout来实现,recyclervIEw可以很好的做这个功能,一般的需求就是要么一个独立的左右滑动效果,要么在一个列表里的中间部分一个左右滑动效果

而列表里面也容易,只是需要解决一点小问题,个人认为值得一提的就是高度问题,一般的人采用固定死的高度,可是在列表里面展示和机型的不同,固定死的话很难保证美观,动态的高度才能解决问题的所在

首先在一个列表控件布局上添加一个recyclervIEw控件

@H_502_7@<androID.support.v7.Widget.RecyclerVIEw androID:ID="@+ID/plan_recycler" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content"/>

然后是adapter适配器布局

@H_502_7@<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:orIEntation="vertical" androID:layout_wIDth="wrap_content" androID:layout_height="match_parent" androID:padding="@dimen/dimen_20dp"> <ImageVIEw androID:ID="@+ID/img_icon" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="center_horizontal" androID:src="@drawable/bbs_plan_mofa"/> <TextVIEw androID:ID="@+ID/tv_content" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="center_horizontal" androID:layout_margintop="@dimen/dimen_8dp" androID:textSize="15sp" androID:textcolor="@color/color_323232"/></linearLayout>

接下来写adapter

@H_502_7@import androID.content.Context;import androID.support.v7.Widget.RecyclerVIEw;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.TextVIEw;import com.xulu.loanmanager.R;import java.util.List;import butterknife.BindVIEw;import butterknife.ButterKnife;/** * Created by liuZhen on 2017/6/22. */public class BBSPlanAdapter extends RecyclerVIEw.Adapter<BBSPlanAdapter.MyVIEwHolder> { private List<String> List; private LayoutInflater mInflater; private Context context=null; private int height; private boolean isMeasure = false; private CallBack callBack; public BBSPlanAdapter(Context context,List<String> List,CallBack callBack) { this.context=context; this.List = List; mInflater = LayoutInflater.from(context); this.callBack = callBack; } @OverrIDe public MyVIEwHolder onCreateVIEwHolder(VIEwGroup parent,int vIEwType) { VIEw vIEw = mInflater.inflate(R.layout.item_bbsdetail_plan,parent,false); if (!isMeasure) { vIEw.measure(VIEw.MeasureSpec.UnspecIFIED,VIEw.MeasureSpec.UnspecIFIED); height = vIEw.getMeasuredHeight(); callBack.getHeight(height); } MyVIEwHolder holder = new MyVIEwHolder(vIEw); return holder; } public int getHeight(){ return height; } @OverrIDe public voID onBindVIEwHolder(MyVIEwHolder holder,final int position) { holder.itemVIEw.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { callBack.ItemClick(position); } }); } @OverrIDe public int getItemCount() { return 6; } static class MyVIEwHolder extends RecyclerVIEw.VIEwHolder{ @BindVIEw(R.ID.tv_content) TextVIEw tv_content; MyVIEwHolder(VIEw vIEw){ super(vIEw); ButterKnife.bind(this,vIEw); } } public interface CallBack{ voID getHeight(int height); voID ItemClick(int position); }}

重点是measure方法,得到测量的高度

接下来就可以直接使用了

@H_502_7@private voID initScrollList(){ final RecyclerVIEw planRecycler = (RecyclerVIEw) headVIEw.findVIEwByID(R.ID.plan_recycler); linearlayoutmanager linearlayoutmanager = new linearlayoutmanager(BBSDetailActivity.this); linearlayoutmanager.setorIEntation(linearlayoutmanager.HORIZONTAL); planRecycler.setLayoutManager(linearlayoutmanager); List<String> List = new ArrayList<>(); BBSPlanAdapter adapter = new BBSPlanAdapter(BBSDetailActivity.this,List,new BBSPlanAdapter.CallBack() { @OverrIDe public voID getHeight(int height) { VIEwGroup.LayoutParams params = planRecycler.getLayoutParams(); params.height = height; planRecycler.setLayoutParams(params); } @OverrIDe public voID ItemClick(int position) { Toast.makeText(BBSDetailActivity.this,""+position,Toast.LENGTH_SHORT).show(); } }); planRecycler.setAdapter(adapter); }

很简单,完全替代自定义view,效果如下,如果没有测量这一步可能会出现高度不适合,要么是看不到textvIEw的文字,因为太低了,要么就是太高了,不美观。

以上所述是小编给大家介绍的AndroID嵌套RecyclerVIEw左右滑动替代自定义view,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

总结

以上是内存溢出为你收集整理的Android嵌套RecyclerView左右滑动替代自定义view全部内容,希望文章能够帮你解决Android嵌套RecyclerView左右滑动替代自定义view所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存