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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM