2012-12-06 80 views
1

我想在旋轉設備時啓用方向。通常這會自動發生,但在本地採購的webview中,它不會發生。它以縱向加載,但我希望它根據設備傾斜的方式來改變方向。Android WebView在旋轉設備時不會改變方向

我在/ assets文件夾adjectives.html

// In Activity 

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

    WebView wv = new WebView(this); 
    setContentView(wv); 
    wv.getSettings().setBuiltInZoomControls(true); 
    wv.loadUrl("file:///android_asset/adjectives.html"); 

} 


// In manifest 
    <activity android:name=".WebViewActivity" 
       android:configChanges="orientation|keyboardHidden">  
    </activity> 

任何想法?

+0

您是否檢查設備上是否啓用了旋轉功能? – vodich

+0

謝謝。這有點令人尷尬,但由於某種原因,它被關閉了。只要切換回來,解決了問題! – TomVeitch

+0

我將其添加爲答案,以便人們閱讀後可以看到實際發生的情況 – vodich

回答

1

如果您使用android:configChanges,則不會自動處理您的特定更改,您必須自己處理它們。

爲此,您必須覆蓋onConfigurationChanged(Configuration newConfig)並檢查newConfig以查看新的Configuration是什麼。如果更改與方向有關,則需要設置新的內容視圖。

最簡單的事情就是,從android:configChanges刪除orientation(除非你有特殊原因不能到),並把你的WebView內部佈局的XML文件,並使用在onCreate(...)內容視圖。這將允許默認的'自動'處理方向變化。

+0

感謝您的總結。我現在理解android:configChanges背後的設計原則。但問題已解決。旋轉必須在設備上禁用。啓用它,我得到了自動旋轉,即使我有configChanges =「orientation」! – TomVeitch

+0

我明白現在它是如何工作的。作爲默認,方向是自動的。如果您希望在設備上傾斜控制方向(關閉,開啓,執行其他操作),則需要在清單中添加android:configChanges =「orientation」並覆蓋onConfigurationChanged(Configuration newConfig)。該方法將在設備傾斜時執行(如果您在清單中設置了configChanges =「orientation」),並且您可以編碼任何想要發生的事情。顯然,如果您不編碼,自動定向的默認行爲將會起作用。 – TomVeitch

1

你是否檢查設備上是否啓用了旋轉功能?