android 动态设置控件宽度,比例等

2023-02-10 20:08:15 浏览数 (1)

左边是手机上面的效果,右边是华为pad上面的效果。

中间 合同价 竣工结算价 这个分类要求显示4个,所以 这个里面item的宽度是动态计算的。

不然无法满足要求。

计算的思路

是用 (屏幕宽度-2*中间linearlayout的 margin-2*中间linearlayout的padding)/4

就是每个item的宽度。

这里面还需要注意一点就是动态设置宽度 不要给item xml里面的 最外面的Linearlayout或者RelativeLayout设置width

这样可能会出错,直接给 布局里面的 textView 或者imageView设置就可以了

代码语言:javascript复制
 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 ;
    }
代码语言:javascript复制
	/**
	 * 获取屏幕宽度;
	 */
	public static int getScreenWidth(Context context) {
		return context.getApplicationContext().getResources()
				.getDisplayMetrics().widthPixels;
	}

mDocCateFl是中间的layout  , mItemWidth是计算出来的宽度,然后将宽度传到adapter里面。

给对应的 textView设置上就可以了

代码语言:javascript复制
  LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(mItemWidth, LinearLayout.LayoutParams.WRAP_CONTENT);
  vh.titleTv.setLayoutParams(params);

0 人点赞