android – WebView无法在方向更改时正确调整大小

我正在使用webview.loadUrl()将视频网址加载到webview中.播放器在html中编码,因此我只需将url加载到Web视图中.

如果我不在我的清单中给android:configChanges =“orientation”一切正常. webview在方向更改时正确调整大小,并调整视频以适应屏幕,当然视频重新启动.

因此我在清单中给了android:configChanges =“orientation”,以便视频不会重新加载.现在虽然视频没有重新加载并继续播放,但视频/ webview没有正确调整大小,如果设备最初处于纵向状态,然后更改为横向,则视频的一半会关闭.如果设备最初处于横向模式,然后更改为纵向模式,则仅使用屏幕的一半.

如果您能找到方法或有任何建议,请回复.

解决方法:

*如果configchanges =“orientation” – 未指定,*
            android系统处理更改并重新启动布局,因此布局是新创建的,视频从开始加载.

如果android:configchanges =“orientation”, –
              这告诉系统此活动将自行处理方向更改.
所以,android系统不会刷新加载布局.所以视频继续播放.父布局的宽度不会改变.所以纵向模式中的宽度用于横向.所以,你的webview看起来很小.

您需要覆盖活动中的onconfigurationchanged()并处理方向更改.
您需要指定布局的layoutparams.

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
            // for example the width of a layout  
            int width = 300;
            int height = LayoutParams.WRAP_CONTENT;
            WebView childLayout = (WebView) findViewById(R.id.webview);
            childLayout.setLayoutParams(new LayoutParams(width, height));
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        }
    }
上一篇:在Android中禁用横向模式?


下一篇:android – 使用ACTION_IMAGE_CAPTURE拍摄的图像在某些Gingerbread设备上的ExifInterface.TAG_ORIENTATION返回1