WebView方向更改问题

时间:2013-09-06 10:38:40

标签: android-layout android-webview

我有一个布局,我有一个线性布局,重力为中心,使儿童中心对齐。我想以编程方式添加webview并加载youtube视频。问题是webview的高度和宽度是wrap_content ,wrap_content.So在纵向模式下webview工作正常并且在中心对齐,但是当更改横向Web视图的方向变为fill_parent并且水平覆盖屏幕时,内容不会看中心。 here is the layout file

here the activity code

下面是以纵向模式显示结果的图像。 线性布局为绿色,webview为蓝色

这是当你将设备旋转到横向模式时,蓝色的webview会拉伸自己以填充整个屏幕宽度。

enter image description here

我希望webview以横向模式放置在中心,同样它也处于纵向模式?请帮我理解这个和任何修复?

4 个答案:

答案 0 :(得分:1)

如果您在WebView中加载视频,那么WebView中的aligment就是html任务。将视频换入<div>并添加适当的样式(在css文件中或标记中的style属性):

<div style="margin:0 auto;width:500px;">
    //your video object is placed here
</div>

您也可以在VideoView中播放视频,但这种技术会更难一些。简而言之,您必须在WebView上方添加FrameLayout,通过html文件获取应放置VideoView的坐标,并为VideoView应用带有坐标的LayoutParams。如果方向将更改,则应使用新坐标刷新VideoView。如果您对此感兴趣,我可以分享更多详细信息。

答案 1 :(得分:1)

嗯,我可能来不及了。但是,我的工作:

AndroidManifest.xml

android:configChanges="orientation"

WebViewContainerActivity.java

@Override
public void onConfigurationChanged(Configuration newConfig) {
    /* WebView mainView is declared globally */
    ConstraintLayout lana = findViewById(R.id.main);
    lana.removeView(mainView);
    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    int screenWidth = displaymetrics.widthPixels;
    int screenHeight = displaymetrics.heightPixels;
    lana.addView(mainView, 0,
            new ConstraintLayout.LayoutParams(
                    screenWidth,
                    screenHeight));
    super.onConfigurationChanged(newConfig);
}

它确实有效地工作了,我必须使用它,因为我不了解HTML。

答案 2 :(得分:0)

为什么wrap_content代表横向布局中的宽度,然后将layout_gravity设置为"center"

答案 3 :(得分:0)

试试这个

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:gravity="center"  >
<LinearLayout
   android:id="@+id/webViewPlaceholder"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="#00AC0F"
   >
</LinearLayout>