一般的话我们都不需要动态设置view高度的,为什么有这个需求呢?更多是来自UI妹子们,比如下面这张图
UI想让banner底部距离背景高度是固定的,这样的话可以让在各种手机上看起来banner间距很完美,这样的话问题来了
背景图是主fragment里面layout的view,banner图是子fragment里面layout的view,两个view完全属于不同的view如何实现间距完全一致呢?
/**
* 重置高度保证banner底部间距固定
* @param bannerHeight 高度
*/
public void updateBackGroundColor(int bannerHeight) {
if (getContext() == null || viewPager == null || viewTopBackground == null || view_top_background_cover == null) {
return;
}
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewTopBackground.getLayoutParams();
RelativeLayout.LayoutParams paramCover = (RelativeLayout.LayoutParams) view_top_background_cover.getLayoutParams();
params.height = viewPager.getTop() + bannerHeight - UIUtil.dip2px(getContext(), 20);
paramCover.height = viewPager.getTop() + bannerHeight - UIUtil.dip2px(getContext(), 20);
viewTopBackground.setLayoutParams(params);
view_top_background_cover.setLayoutParams(paramCover);
}
看下不同手机的效果:
这里主要考察的就是基础
getTop 在该布局内的上高度
getBottom 在该布局内的下高度
getHeight=getBottom-getTop 是view真实高度