2017-12-18 9 views
1

この問題は、Android上の2つの望ましくない影響生み出す:私はしたくない (アプリ起動時)SizeChangedListenerコードネーム1つのアプリの起動時にAndroid上で画面サイズの変更を避け

  • つの実行を。
  • アプリが表示されてから、 が開始された後に、フォームの背景が目に見えて望ましくないサイズ変更されました。 (オプション:Style.BACKGROUND_IMAGE_SCALED_FILL

    12-18:00:49:45.594 D/SizeChangedListener(17264):[EDT] 0:0:0

三星銀河S8 +でテスト次のコードは、このログを生成します、22 - 初期画面サイズ:1080 * 2008 12-18 00:49:45.596 I/System.out(17264):showKeyboard false 12-18 00:49:45.623 D /コードネーム1(17264):sizechanged :1080 1945 [email protected] 12-18 00:49:45.627 D/libEGL(17264):loaded /vendor/lib64/egl/libGLES_mali.so 12-18 00:49:45.633 I/WebViewFactory(17264):com.google.android.webviewバージョン60.0.3112.107(コード311210750) 12-18 00:49:45.634 D/SizeChangedListener(17264):[ EDT] 0:0:0,61 - "hiフォーム"のSizeChangedListenerが呼び出されました... 12-18 00:49:45.635 D/SizeChangedListener(17264):[EDT] 0:0:0,64 - 新規画面サイズ:* 1945 1080

これは私がこの問題を複製するために使用される非常に簡単なコードです:

public void start() { 
    if (current != null) { 
     current.show(); 
     return; 
    } 
    Form hi = new Form("Hi World", BoxLayout.y()); 
    hi.add(new Label("Hi world")); 
    Log.p("Initial Screen size: " + hi.getWidth() + " * " + hi.getHeight()); 
    hi.show(); 

    hi.addSizeChangedListener(l -> { 
     Log.p("SizeChangedListener on \"hi Form\" invoked..."); 
     Log.p("New Screen size: " + hi.getWidth() + " * " + hi.getHeight()); 
    }); 

答えて

1

我々ビューのサイズとAndroidから取得するイベントを中継します。この理由はおそらく、起動時に非表示になり、互換性のために追加されるステータスバーに関係していると考えられます。

我々は一時的として、Androidのと、それはステータスバーはデフォルトでは隠されていない他のデバイスで同様の問題を作成するかもしれませんが、この問題が解決される場合がありますenable status bar hiding on AndroidにRFE ...しばらく

+0

を持っています回避策として、単に 'hi.show();'の直前に 'TestUtils.waitFor(500);を追加しました。フォームの背景の不必要なサイズ変更の問題を解決しました(明らかに?)。よりよい回避策を提案できますか?ありがとうございました:) –

+0

クラッシュを引き起こす可能性があるので、それはあなたがすべきことではありません。それが問題なら、私はちょうど別の背景パターンを設定します。 –

+0

なぜクラッシュする可能性がありますか? –

関連する問題