当控件未加载的时候获取屏幕宽高获取的都是0,所以需要换个方法
mViewHolder.mAdressView.post(new Runnable() {
@Override
public void run() {
setSnSeviceLayout();
}
});
public void setSnSeviceLayout(){
int width= (mViewHolder.mAdressView.getWidth()-DimenUtils.dip2px(getActivity(),55))/3; //不能使用一开始隐藏的控件获取宽度,否则获取到的宽度为0
ViewGroup.LayoutParams params1= mViewHolder.mTvSuningService.getLayoutParams();
params1.width=width;
mViewHolder.mTvSuningService.setLayoutParams(params1);
ViewGroup.LayoutParams params2= mViewHolder.mTvHasStorage.getLayoutParams();
params2.width=width;
mViewHolder.mTvHasStorage.setLayoutParams(params2);
ViewGroup.LayoutParams params3= mViewHolder.mTvOverseas.getLayoutParams();
params3.width=width;
mViewHolder.mTvOverseas.setLayoutParams(params3);
ViewGroup.LayoutParams params4= mViewHolder.mTvPublicWelfare.getLayoutParams();
params4.width=width;
mViewHolder.mTvPublicWelfare.setLayoutParams(params4);
}
但是当使用了上述的方法的时候获取的宽度仍然是0,后来才发现是因为mViewHolder.mAdressView这个控件被设置了隐藏GONE,需要更换其他Visible的控件即可。