码迷,mamicode.com
首页 > 移动开发 > 详细

Android RecyclerView的item大小保持四个半

时间:2019-03-06 19:20:45      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:view实现   util   func   you   手机   oat   function   name   spl   

 

现在有这么一个需求,实现下图的UI。  我想你应该能想到用RecyclerView实现, 当我唰唰唰几分钟做完之后,UI设计师跟我说,每个item,无论在什么手机上,都要显示四个半,具体看下图。

技术图片

 

我们都知道,Android手机的屏幕大小不一,这种需求我们不可能把图片的宽写死,或者写成wrap_content,这个时候就要在java代码中重新测量并且重新设置宽了。代码如下:

 

  1.  
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int) ((getResources().getDisplayMetrics().widthPixels - CommonUtil.dip2px(mContext, 5)) / 4.5f),
  2.  
    ViewGroup.LayoutParams.MATCH_PARENT);

这里-5是因为 我的RecyclerView在布局中marginLeft了5dp,如果你没有设置margin值,则不用减去。

dip2px代码:

  1.  
    /**
  2.  
    * 根据手机分辨率从dp转成px
  3.  
    *
  4.  
    * @param context
  5.  
    * @param dpValue
  6.  
    * @return
  7.  
    */
  8.  
    public static int dip2px(Context context, float dpValue) {
  9.  
    final float scale = context.getResources().getDisplayMetrics().density;
  10.  
    return (int) (dpValue * scale + 0.5f);
  11.  
    }

 

解释一下思路:创建出LayoutParams 第一个参数是宽,第二个是高, 宽度使用getResources方法获取屏幕的宽度,再减去5的和, 除以4.5。高度还是match_parent。

 

然后把params设置给item即可

 

mLL_collect.setLayoutParams(params);

 

这个时候每个item绘制时,都会重新测量屏幕宽度,就能实现任何屏幕都是四个半的需求,3个半 5个半也是同理,把4.5换成3.5、5.5即可。

Android RecyclerView的item大小保持四个半

标签:view实现   util   func   you   手机   oat   function   name   spl   

原文地址:https://www.cnblogs.com/xgjblog/p/10485152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!