如今有这么一个需求,实现下图的UI。 我想你应该能想到用RecyclerView实现, 当我唰唰唰几分钟作完以后,UI设计师跟我说,每一个item,不管在什么手机上,都要显示四个半,具体看下图。html
咱们都知道,Android手机的屏幕大小不一,这种需求咱们不可能把图片的宽写死,或者写成wrap_content,这个时候就要在java代码中从新测量而且从新设置宽了。代码以下:java
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int) ((getResources().getDisplayMetrics().widthPixels - CommonUtil.dip2px(mContext, 5)) / 4.5f), ViewGroup.LayoutParams.MATCH_PARENT);这里-5是由于 个人RecyclerView在布局中marginLeft了5dp,若是你没有设置margin值,则不用减去。布局
dip2px代码:post
解释一下思路:建立出LayoutParams 第一个参数是宽,第二个是高, 宽度使用getResources方法获取屏幕的宽度,再减去5的和, 除以4.5。高度仍是match_parent。spa
而后把params设置给item便可设计
mLL_collect.setLayoutParams(params);
这个时候每一个item绘制时,都会从新测量屏幕宽度,就能实现任何屏幕都是四个半的需求,3个半 5个半也是同理,把4.5换成3.五、5.5便可。code