0

ゲームが描画される GameView というカスタム ビューがあります。GameView のオーバーレイとして機能する PausedView という子ビューもあります。ゲームが一時停止すると、PausedView が表示されるように設定され、画面には 50% の不透明度の黒いオーバーレイと 4 つのボタンが表示されます。

私の問題は、LG Optimus S (Android 2.3.3) でこれらのボタンが表示されないことです。それらはそこにあり、クリックできますが、表示されません。さらに、黒いオーバーレイは、GameView 内のボタンとテキストビューにのみ表示されます。アクティビティから離れてからアクティビティに戻ると、すべて正常に表示されます。

このバグは、Motorola Xoom (Android 3.2.1) または Motorola 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 に答える