【发布时间】:2013-11-24 04:05:37
【问题描述】:
以下是我的活动中的组件:
- 列表视图
- 底栏实际上是列表视图下的RelativeLayout。它在我的程序中动态显示或隐藏。像这样的
代码
if ( condition ) {
bottombar.getLayoutParams().height = RelativeLayout.LayoutParams.WRAP_CONTENT;
} else {
bottombar.getLayoutParams().height = 0;
}
this.findViewById(android.R.id.content).invalidate();
似乎 invalidate() 根本不起作用。如果我添加一些东西,我会设置底部栏的高度。视图根本没有刷新。只有在我滚动 ListView 后才会刷新。
有什么想法吗?谢谢
【问题讨论】:
-
你是在主线程上运行这段代码吗?
-
顺便说一句,如果我像这样在 invalidate() 之前添加一行:listadapter.notifyDataSetChanged(),它将起作用。但我不知道为什么?
-
实际上 listadapter.notifyDataSetChanged() 只会刷新视图。 invalidate() 和 requestLayout() 不会。
-
您能否再多展示一下这段代码的位置,以便更好地了解正在发生的事情?
-
@codeMagic - 整个应用程序相当复杂。但是上面提到的代码是在 onActivityResult() 内部调用的,它是从另一个活动返回的(在 onCreate 中也作为初始化调用)。另一个活动是通过单击列表视图中的单元格来启动的。
标签: android android-activity refresh invalidation