WebView 在方向改变时无法正确调整大小

use*_*902 5 android orientation webview

我正在使用 webview.loadUrl() 将视频 url 加载到 webview 中。播放器是在 html 本身中编码的,因此我只需将 url 加载到 Web 视图中即可。

如果我不在清单中给出 android:configChanges="orientation" ,一切正常。网络视图在方向改变时正确调整大小,并且视频被调整以正确适应屏幕,当然然后视频会重新启动。

因此,我在清单中给出了 android:configChanges="orientation" ,以便视频不会重新加载。现在,虽然视频不会重新加载并继续播放,但视频/网络视图无法正确调整大小,并且如果设备最初为纵向,然后更改为横向,则一半视频会离开屏幕。如果设备最初处于横向模式,然后更改为纵向模式,则仅使用一半的屏幕。

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

sow*_*mia 3

*如果 configchanges = "orientation" - 未指定 * android 系统会处理更改并重新启动布局,因此布局是全新创建的,并且视频从头开始加载。

if android:configchanges = "orientation" , - 这告诉系统此活动将自行处理方向更改。所以,android系统不会刷新加载布局。所以视频继续播放。父布局的宽度不会改变。因此,横向模式下使用纵向模式的宽度。所以,你的网页视图看起来很小。

您需要覆盖 Activity 中的 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();
        }
    }
Run Code Online (Sandbox Code Playgroud)