叠加视图有时不会绘制

时间:2011-06-16 17:55:44

标签: android android-layout

我最近将手机更新为姜饼,令我惊恐的是我的一个应用程序停止了工作!

该应用程序由SurfaceView和布局(视图)组成,它在此SurfaceView上显示为叠加层。

xml看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >

  <com.mycompany.MySurfaceView
    android:id="@+id/myview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"    
  />

  <include layout="@layout/settings"
  android:layout_alignTop="@id/myview"
  android:visibility="invisible"
  android:id="@+id/settings"
  />

</RelativeLayout>

当用户按下菜单按钮时,我使用此代码显示视图:

View settings = (View)findViewById(R.id.settings);
settings.setVisibility(View.VISIBLE);

这在早于2.3的版本上运行完美,但现在行为非常随机。

观察

很少一切都有效。

有时隐藏/取消隐藏后,视图会显示出来。

有时您可以按下视图上的按钮(即使它不可见),这会使视图显示应用程序生命周期的其余部分。

getVisibility方法始终报告正确的值。

我尝试了什么

重建绘制缓存

使用BringToFront方法

发布无效

将视图的初始值设置为“可见”,这使一切正常,但我真的希望它最初是不可见的!

如果有人想检查问题,你可以在我的应用程序中自己尝试(它在市场上,搜索“chainparticles”)。

谢谢!

1 个答案:

答案 0 :(得分:1)

通过将视图初始状态更改为“已消失”来解决此问题。 WTF?!