2011-11-09 38 views
4

我偶然發現,如果您有一個設置爲一個方向但包含不同方向的單獨佈局文件的活動,那麼當第一次啓動活動時,它會使用匹配設備的物理方向而不是的佈局文件與匹配活動的方向的佈局文件充氣。因此,如果指定的AndroidManifest.xmlAndroid可以使用錯誤的佈局文件進行單向定位活動

<activity 
     android:name=".activities.LandscapeGardener" 
     android:screenOrientation="sensorLandscape"> 
     <!-- note for new readers: sensorLandscape is like landscape, but also 
      works upside-down. 
      Other activity stuff would go here. --> 
    </activity> 

並且存在在layout-port文件夾LandscapeGardener的佈局,如果該活動是在縱向加載時,所述特定縱向佈局將被充氣。

順便說一下,我們遇到這種情況的原因是我們正在開發的一個活動有一些肖像特定的錯誤,所以我們決定在用戶​​修復時抑制肖像模式 - 但當然這個問題會使得壓制有點偏激!

請注意,如果設備在啓動時被正確定位,它將不會更改爲錯誤的佈局。

+0

只是好奇,是不是添加'android:configChanges =「orientation」有什麼區別? –

+0

這是在啓動;如果您從橫向開始,它不會更改佈局。 –

+0

可能是一個愚蠢的問題,但是LandscapeGardener的意思是「風景」,而不是方向,對嗎? (如在一個可能被加花的地方)否則,你在佈局端口文件夾中有一個橫向鎖定佈局。 –

回答

-1

而不是sensorLandscape,試試風景。我很確定它的工作原理。

+0

我剛試過它,''landscape'產生與'sensorLandscape'完全相同的錯誤。 –