Android RecyclerView的item大小保持四个半

 

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

 

咱们都知道,Android手机的屏幕大小不一,这种需求咱们不可能把图片的宽写死,或者写成wrap_content,这个时候就要在java代码中从新测量而且从新设置宽了。代码以下: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代码:post

  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。spa

 

而后把params设置给item便可设计

 

mLL_collect.setLayoutParams(params);

 

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

相关文章
相关标签/搜索