zoukankan      html  css  js  c++  java
  • Android RecyclerView的item大小保持四个半

     

    现在有这么一个需求,实现下图的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即可。

  • 相关阅读:
    动态规划解决数字三角形问题
    动态规划,贪心,分治
    7-3 两个有序序列的中位数 (20分) log n的解法
    二分查找 单峰数组中的最大值 O(log n)
    数据库连接池 C3P0和 Druid
    SQL注入问题
    MATLAB spectrogram命令
    JDBC工具类
    Egret--拼接Rect实现用于新手引导的扣洞
    egrte-取消居中约束
  • 原文地址:https://www.cnblogs.com/xgjblog/p/10485152.html
Copyright © 2011-2022 走看看