0

我有一个名为 GameView 的自定义视图,用于绘制我的游戏。还有一个名为 PausedView 的子视图用作 GameView 的叠加层。当游戏暂停时,PausedView 设置为可见,屏幕获得 50% 不透明度的黑色覆盖层和 4 个按钮。

我的问题是在我的 LG Optimus S (Android 2.3.3) 上没有出现这些按钮。他们在那里,你可以点击然后,但他们没有显示出来。此外,黑色覆盖仅出现在 GameView 中的按钮和文本视图上。如果我离开,然后回到活动,一切看起来都很正常。

我的摩托罗拉 Xoom (Android 3.2.1) 或摩托罗拉 Droid (Android 2.2.3) 上不会出现此错误。直到最近我的 Optimus 上也没有发生这种情况(我想大约是在我获得服务更新的时候)。

我正在谈论的屏幕截图:

http://postimage.org/image/qjhiho3ed/

http://postimage.org/image/9k8k2es6t/

我尝试在 GameView 和 PausedView 上调用 postInvalidate(),但没有帮助。

有没有人遇到过这样的事情?


更新:我尝试从 XML 中删除不可见性设置并使用此代码,但它仍然无法正常工作。在创建视图很久之后,我可以通过在视图上调用 setVisibility 来纠正它,但是在创建过程中我找不到调用这些函数的正确位置。

// Use XML layout
setContentView(R.layout.main);

// define the views of this activity
gameView    = (GameView)findViewById(R.id.gameView);
pausedView  = findViewById(R.id.pausedView);
victoryView = findViewById(R.id.victory); 


pausedView.setVisibility(View.INVISIBLE);
victoryView.setVisibility(View.INVISIBLE);

更新:

通过使用修复它

pausedView.setVisibility(View.GONE);
victoryView.setVisibility(View.GONE);
4

1 回答 1

0

是的,我想我遇到过类似的事情。在我的应用程序中,我有一个带有图像源和叠加层的 FrameView。在我的 Android 4.0.3 设备上,它看起来很好,但对于 2.3.x 设备(或更早版本),它们在设置为可见时不会出现。

到目前为止,我唯一的解决方案是不在 XML 文件中将视图设置为不可见,并在布局膨胀后立即将它们变为不可见(或消失)。在那之后,一切似乎都正常。

于 2012-07-10T08:32:13.440 回答