2012-12-06 62 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

你是否检查设备上是否启用了旋转功能?