1

全画面レイアウトでプログラムで作成されたボタンがいくつかあります。つまり、アクティビティの開始時に次のコードがあります。

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

..アクティビティが開始され、ボタンを作成します。すべて問題ないように見えます。ボタンは正確に正しいサイズで表示され、画面上の期待する場所 (右下) に表示され、テキストはボタン内で完全に中央に配置されます。

次に、インターネットを使用して他のアクティビティを呼び出し、後で元のアクティビティに戻ると、問題が発生します。この時点で画面が再描画されると、画面がわずかにずれて描画され、すぐに再配置されたかのように、わずかな揺れに気付くでしょう。結果として得られる最終画面は、下部のボタンがトリミングされていることを除いて、ほとんど問題ないように見えます。

これは Samsung Galaxy SII で発生していますが、Galaxy Tab 10.1 では目立った問題はありません。これらの行をコメントアウトしても、どちらのデバイスでも問題はありません。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

トリミングされたボタンは次のとおりです。

ここに画像の説明を入力

誰かが同様の問題を抱えていましたか?もしそうなら、それはどのように解決されましたか?

編集:私の直感では、どういうわけかステータスバーがゆっくりと削除されているだけで、どういうわけかボタンが画面上に配置されていますが、ステータスバーが消えて画面が上にスライドしている途中です...しかし、おそらくこのアイデア赤いニシンです。

4

2 に答える 2

0

この問題を再現することはできませんが、関数の順序を変更してみてください。これは通常は提案できないことだと思いますが、試してみてください。

public void onCreate(Bundle savedInstanceState) {

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);

    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
于 2012-09-21T06:12:17.987 に答える
0

ボタンを更新するために onResume() を試すことができます。ボタンごとに次のようにする必要があります。

 ViewGroup.LayoutParams params_btn1 = <params used to display programmatically the button>
 getWindowManager().updateViewLayout(button1, params_btn1);
于 2012-09-24T11:25:16.260 に答える