2017-12-18 75 views
1

這個問題產生於Android 2個不良影響:代號一個 - 避免在Android屏幕尺寸變化對應用程序啓動時

SizeChangedListener
  • 一個執行(在應用程序啓動),我 不想;
  • 剛開始應用程序 後,表單背景 (與選項Style.BACKGROUND_IMAGE_SCALED_FILL)的可見和不需要的調整大小。

下面的代碼,在三星Galaxy S8 +測試,產生該日誌:

12-18 00:49:45.594 d/SizeChangedListener(17264):[EDT] 0:0:0 ,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加載com.google.android.webview版本60.0.3112.107(代碼311210750) 12-18 00:49:45.634 D/SizeChangedListener(17264):[ EDT] 0:0:0,61 - 調用「hi Form」上的SizeChangedListener ... 12-18 00:49:45.635 D/SizeChangedListener(17264):[EDT] 0:0:0,64 - New屏幕尺寸:1080×1945

這是非常簡單的代碼,我用複製此問題:

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獲得的事件。原因可能與在啓動時可能隱藏的狀態欄有關,然後爲了兼容性而添加。

我們有一個RFE到enable status bar hiding on Android這可能會解決這個問題雖然與Android,這也許可以在狀態欄默認是不隱藏在其他設備中的類似問題......

+0

在同時,作爲臨時解決方法,我只是在'hi.show();'之前添加'TestUtils.waitFor(500);'。它(顯然?)解決了不必要的窗體背景大小調整問題。你能建議我一個更好的解決方法嗎?謝謝:) –

+0

這不是你應該做的,因爲它可能會導致崩潰。如果這是一個問題,我會設置不同的背景圖案。 –

+0

它爲什麼會導致崩潰? –