2013-12-13 34 views
1

我們的應用程序基於屏幕尺寸強制縱向或橫向模式。佈局目錄中的佈局是針對橫向的默認方向。我們有適當的替代佈局端口。在開始時,應用程序會查看屏幕大小,然後設置適當的方向。例如,要強制使用人像模式,我們調用:Android在縱向模式下使用錯誤的佈局文件

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 

對於一個片段,我們針對位於layout-port中的肖像模式進行了特殊佈局。

如果設備,平板電腦,目前在橫向位置中擱置,在佈局目錄中的缺省佈局被選擇。這似乎與應該發生的情況相反。

是,當時我們正在迫使人像模式,我們可以確保在佈局端口目錄中的XML文件中使用的方法嗎?

回答

-1

據我所知,肖像模式是默認的。你應該把你的「佈局土地」文件夾

1

你只是使用了錯誤的標誌在「佈局」文件夾中的縱向佈局和您的景觀佈局,所以它不是真正迫使肖像模式。 From the docsSCREEN_ORIENTATION_SENSOR_PORTRAIT

願有在縱向方向在屏幕上,但可以使用傳感器來改變屏幕朝向的方向。

如果你想人像,使用SCREEN_ORIENTATION_PORTRAIT

想有一個縱向的畫面:即,與顯示器的高度大於寬,忽略傳感器數據。

+0

感謝您的回覆。但是,即使我更改爲SCREEN_ORIENTATION_PORTRAIT,行爲也是如此。 –

+0

你確定你的屏幕測量邏輯正確嗎?這絕對應該鎖定佈局。確保它實際上被調用。 – Geobits

+0

我發現如果我在片段的onResume()方法中測試預期的佈局,而不是在onCreateView()方法中工作。找不到解釋爲什麼會這樣。 –

0

我認爲當值的縱向變化之前,檢查問題出現生效後,由於定位在代碼中被定義,像這樣的東西

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

凡是preceeds這在代碼不會意識到這一變化。我注意到調用setRequestOrientation會導致佈局重繪,所以您應該等到重繪完成後再檢查值。

我注意到這一點,因爲我也有類似的問題,並指出,景觀佈局正在遺像前佈局繪製。橫向佈局不包含縱向佈局的所有元素,因此它觸發了空指針異常。但是,如果我等到肖像重繪完成後再檢查 - 肖像的值是正確的。這可以安全地在onResume回調中完成。希望這可以幫助。

相關問題