最近接到一个需求
如图所示,要在头布局加一个遮罩层,需求难点在于这个头布局的高度是不固定的,其中内容和查看更多都是要从后台获取数据后,动态的将整个头布局撑大,尤其是查看更多里面的逻辑涉及到遍历数据,这是后就导致了一个问题,当从后台拿到数据,将背景设置完成后,量取背景的宽高,然后动态的将宽高赋予这个遮罩层, 由于查看更多这个逻辑导致量取背景的宽高第一次不准,刷新一次后才好。其间试了很多次方法,例如 监听OnGlobalLayoutListener ,在onWindowFocusChanged这个方法里测量,但是第一次都不准确,后来网上查阅资料终于找到了 正确的测量方法 :
Glide.with(this).load(image).
into(new SimpleTarget<GlideDrawable>() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super
GlideDrawable> glideAnimation) {
rl_special_topic_bg.setBackground(resource);
rl_special_topic_bg.post(new Runnable() {
@Override
public void run() {
int height = rl_special_topic_bg.getHeight();
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)rl_black.getLayoutParams();
params.height = height;
params.width = screenWhith;
rl_black.setLayoutParams(params);
}
});
}
});
没错就是用view.post开启一个线程,希望有越到困惑的可以看看,能解决问题就好