左边是手机上面的效果,右边是华为pad上面的效果。
中间 合同价 竣工结算价 这个分类要求显示4个,所以 这个里面item的宽度是动态计算的。
不然无法满足要求。
计算的思路
是用 (屏幕宽度-2*中间linearlayout的 margin-2*中间linearlayout的padding)/4
就是每个item的宽度。
这里面还需要注意一点就是动态设置宽度 不要给item xml里面的 最外面的Linearlayout或者RelativeLayout设置width
这样可能会出错,直接给 布局里面的 textView 或者imageView设置就可以了
private void getScreenInfo() { ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) mDocCateFl.getLayoutParams(); int margin = 0; int padding = 0; margin = lp.leftMargin; padding = mDocCateFl.getPaddingLeft(); mItemWidth = (PhoneUtil.getScreenWidth(getContext())-(2*margin) - (2*padding)) / 4 ; }
/** * 获取屏幕宽度; */ public static int getScreenWidth(Context context) { return context.getApplicationContext().getResources() .getDisplayMetrics().widthPixels; }
mDocCateFl是中间的layout , mItemWidth是计算出来的宽度,然后将宽度传到adapter里面。
给对应的 textView设置上就可以了
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(mItemWidth, LinearLayout.LayoutParams.WRAP_CONTENT); vh.titleTv.setLayoutParams(params);