全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

以前的左右滑动效果采用自定义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,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# recycleview  # 滑动  # 自定义view  # RecyclerView+CardView实现横向卡片式滑动效果  # RecyclerView滑动到指定Position的方法  # Android中RecyclerView实现横向滑动代码  # Android中RecyclerView嵌套滑动冲突解决的代码片段  # Android中RecyclerView 滑动时图片加载的优化  # android RecyclerView侧滑菜单  # 滑动删除  # 长按拖拽  # 下拉刷新上拉加载  # Android实现评论栏随Recyclerview滑动左右移动  # Android 滑动监听RecyclerView线性流+左右划删除+上下移动  # Android开发中RecyclerView模仿探探左右滑动布局功能  # Android RecyclerView滑动删除和拖动排序  # RecyclerView实现探探卡片滑动效果  # 自定义  # 小编  # 的人  # 是在  # 很好  # 很难  # 在此  # 给大家  # 很简单  # 如果没有  # 解决问题  # 不适合  # 一提  # 来实现  # 高了  # 所述  # 太低  # 给我留言  # 感谢大家  # 就可以 


相关文章: C#如何序列化对象为XML XmlSerializer用法  如何解决ASP生成WAP建站中文乱码问题?  如何在阿里云高效完成企业建站全流程?  高防服务器如何保障网站安全无虞?  建站之星如何快速更换网站模板?  如何快速搭建高效服务器建站系统?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  建站之星伪静态规则如何正确配置?  网站制作需要会哪些技术,建立一个网站要花费多少?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  济南网站制作的价格,历城一职专官方网站?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  如何零成本快速生成个人自助网站?  如何在万网自助建站平台快速创建网站?  建站与域名管理如何高效结合?  广东企业建站网站优化与SEO营销核心策略指南  头像制作网站在线制作软件,dw网页背景图像怎么设置?  建站之星展会模板:智能建站与自助搭建高效解决方案  定制建站模板如何实现SEO优化与智能系统配置?18字教程  b2c电商网站制作流程,b2c水平综合的电商平台?  如何用PHP快速搭建CMS系统?  如何通过虚拟主机空间快速建站?  如何挑选高效建站主机与优质域名?  建站之星安装后界面空白如何解决?  Python多线程使用规范_线程安全解析【教程】  如何快速打造个性化非模板自助建站?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  如何选择高性价比服务器搭建个人网站?  香港服务器租用每月最低只需15元?  如何在景安服务器上快速搭建个人网站?  建站主机选购指南与交易推荐:核心配置解析  北京专业网站制作设计师招聘,北京白云观官方网站?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  如何快速查询域名建站关键信息?  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何通过IIS搭建网站并配置访问权限?  如何通过宝塔面板实现本地网站访问?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何确保FTP站点访问权限与数据传输安全?  如何选择网络建站服务器?高效建站必看指南  如何在万网开始建站?分步指南解析  Python如何创建带属性的XML节点  制作宣传网站的软件,小红书可以宣传网站吗?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  网站图片在线制作软件,怎么在图片上做链接?  做企业网站制作流程,企业网站制作基本流程有哪些?  阿里云网站制作公司,阿里云快速搭建网站好用吗? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。