如何强制整个布局视图刷新?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (7)

我希望强制主布局资源视图重新绘制/刷新,比如Activity.onResume()方法。我该怎么做?

在主布局视图中,我指的是在我的Activity.onCreate()中调用的一个(下面的“R.layout.maincreen”),如下所示:-

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainscreen);
}
提问于
用户回答回答于

试一试getWindow().getDecorView().findViewById(android.R.id.content).invalidate();

用户回答回答于

若要严格回答以下问题:请使用voidance():

公共无效无效(),因为:API级别1 使整个视图无效。如果视图是可见的,onDraw(画布)将在将来的某个时候被调用。这必须从UI线程调用。若要从非UI线程调用,请调用postInValue()。

ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();

现在,当活动恢复时,它会使“每个视图”自行绘制。不需要调用使()无效。若要应用主题,请确保在绘制任何视图之前,即在绘制之前setContentView(R.layout.mainscreen);

公共无效setTheme(Int RESID)自:API级别1 设置此上下文的基本主题。请注意,在上下文中实例化任何视图之前(例如,在调用setContentView(View)或Inflate(int,ViewGroup)之前),应该先调用它。

API文档引用在这里:

由于onDraw()方法在已经实例化的视图上工作,setTheme将无法工作。我本人对主题没有经验,但我认为有两个备选方案:

  1. 在onCreate()中调用setTheme,或者
  2. redo setContentView(R.layout.maincreen);强制恢复所有布局。

扫码关注云+社区