以下是我的活动中的组件:
代码
if ( condition ) {
bottombar.getLayoutParams().height = RelativeLayout.LayoutParams.WRAP_CONTENT;
} else {
bottombar.getLayoutParams().height = 0;
}
this.findViewById(android.R.id.content).invalidate();
似乎invalidate()根本不起作用。如果我添加一些东西,我设置底部栏的高度。该视图根本没有刷新。滚动ListView后,它只会刷新。
有什么想法吗?感谢
答案 0 :(得分:3)
而不是invalidate()
,您应该在更改相对布局的高度后调用requestLayout()
。
答案 1 :(得分:0)
使整个视图无效。如果视图可见,将在某个时间点调用onDraw(Canvas)。必须从UI线程调用此方法。要从非UI线程调用,请调用postInvalidate()。
ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();
现在,当Activity恢复时,它会使每个View都自行绘制。不需要调用invalidate()。要应用主题,请确保在绘制任何视图之前(即setContentView(R.layout.mainscreen);