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即可。

  • 相关阅读:
    github单独下载一个文件夹
    搭建github服务器
    ssh xshell 连接在vim中无法用 ctrl+insert 复制黏贴
    centos 下文件夹共享
    rootkit 内核函数hook
    centos dhcp获取不到ip解决方法 Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization.
    ipc 入侵步骤
    linux 无交互添加用户设置密码
    C++笔记
    感谢路遥 感谢平凡的世界
  • 原文地址:https://www.cnblogs.com/xgjblog/p/10485152.html
Copyright © 2011-2022 走看看