1. 程式人生 > >Android RecyclerView的item大小保持四個半

Android RecyclerView的item大小保持四個半

有這麼一個需求,實現下圖的UI。  我想大家應該都能想到用RecyclerView實現, 當我唰唰唰幾分鐘做完之後,UI設計師跟我說,每個item,無論在什麼手機上,都要顯示四個半,具體看下圖。

我們都知道,Android手機的螢幕大小不一,這種需求我們不可能把圖片的寬寫死,或者寫成wrap_content,這個時候就要在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

dip2px程式碼:

    /**
     * 根據手機解析度從dp轉成px
     *
     * @param context
     * @param dpValue
     * @return
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

解釋一下思路:創建出LayoutParams 第一個引數是寬,第二個是高, 寬度使用getResources那個方法獲取螢幕的寬度,再減去5的和, 除以4.5。高度還是match_parent。

然後把params設定給item即可

mLL_collect.setLayoutParams(params);

這個時候每個item繪製時,都會重新測量螢幕寬度,就能實現任何螢幕都是四個半的需求,3個半 5個半也是同理,把4.5換成3.5、5.5即可。