以前的左右滑动效果采用自定义scrollview或者linearlayout来实现,recyclerview可以很好的做这个功能,一般的需求就是要么一个独立的左右滑动效果,要么在一个列表里的中间部分一个左右滑动效果
而列表里面也容易,只是需要解决一点小问题,个人认为值得一提的就是高度问题,一般的人采用固定死的高度,可是在列表里面展示和机型的不同,固定死的话很难保证美观,动态的高度才能解决问题的所在
首先在一个列表控件布局上添加一个recyclerview控件
<android.support.v7.widget.RecyclerView android:id="@+id/plan_recycler" android:layout_width="match_parent" android:layout_height="wrap_content"/>
然后是adapter适配器布局
<?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
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方法,得到测量的高度
接下来就可以直接使用了
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自定义左右或上下滑动翻页效果,包括了Android自定义左右或上下滑动翻页效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android自定义左右或上下滑动翻页展示的具体代码,供大家参考,具体内容如下 该自定义的效果和ViewPage+Fragment差不多 上下滑动翻页,继承ScrollView 左右滑动翻页,继承HorizontalScrollVi
本文向大家介绍Android自定义View实现左右滑动选择出生年份,包括了Android自定义View实现左右滑动选择出生年份的使用技巧和注意事项,需要的朋友参考一下 自定义view的第三篇,模仿的是微博运动界面的个人出生日期设置view,先看看我的效果图: 支持设置初始年份,左右滑动选择出生年份,对应的TextView的值也会改变。这个动画效果弄了好久,感觉还是比较生硬,与微博那个还是有点区别。
本文向大家介绍Android自定义可左右滑动和点击的折线图,包括了Android自定义可左右滑动和点击的折线图的使用技巧和注意事项,需要的朋友参考一下 前言 前几天有小盆友让我写一个折线图,可以点击,可以左右滑动。对于折线肯定有很多项目都使用过,所以网上肯定也有很多demo,像AndroidChart、HelloChart之类的,功能相当丰富,效果也很赞,但是太重了,其他的小demo
我有viewpager和tablayout,内部viewpager有一个创建RecolyerView片段, 在RecyclerVIew roe项目中,我创建了一个水平滚动视图,用于向左/向右移动, 基本上,我只想滑动屏幕的75%左右,然后显示可滑动视图, 我还使用了的,但它会刷行(100%刷行), 但所有这些都不能正常工作,因为当我们在recyclerview项上滑动时,有时触摸到ViewPage
本文向大家介绍Android自定义控件实现可左右滑动的导航条,包括了Android自定义控件实现可左右滑动的导航条的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android实现可左右滑动导航条的具体代码,供大家参考,具体内容如下 先上效果图: 这个控件其实算是比较轻量级的,相信不少小伙伴都能做出来。因为项目中遇到了一些特殊的定制要求,所以就自己写了一个,这里放出来。 首先来分析下
本文向大家介绍Android手势左右滑动效果,包括了Android手势左右滑动效果的使用技巧和注意事项,需要的朋友参考一下 最近想实现Android左滑弹出菜单框,右滑消失菜单这个个功能。了解了一下Android 的滑动事件,必须是在view组件或者Activity上实现,同时必须实现OnTouchListener, OnGestureListener这个两个接口。 以上就是本文的全部内容,希望对