Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android layout WebView定向更改问题_Android Layout_Android Webview - Fatal编程技术网

Android layout WebView定向更改问题

Android layout WebView定向更改问题,android-layout,android-webview,Android Layout,Android Webview,我在下面有一个布局,其中我有一个以重心为中心的线性布局,以使子中心对齐。我想通过编程添加一个webview并在其中加载youtube视频。问题是webview的高度和宽度是包裹内容,包裹内容。因此,在纵向模式下,webview工作正常,并在中心对齐,但当更改方向为横向时,webview将成为填充父视图,并水平覆盖屏幕,因此内容不会在中心对齐。 及 下图显示了在纵向模式下的结果,这是很好的。 线性布局为绿色,webview为蓝色 当你将设备旋转到横向模式时,蓝色的webview会自动伸展,填满

我在下面有一个布局,其中我有一个以重心为中心的线性布局,以使子中心对齐。我想通过编程添加一个webview并在其中加载youtube视频。问题是webview的高度和宽度是包裹内容,包裹内容。因此,在纵向模式下,webview工作正常,并在中心对齐,但当更改方向为横向时,webview将成为填充父视图,并水平覆盖屏幕,因此内容不会在中心对齐。

下图显示了在纵向模式下的结果,这是很好的。 线性布局为绿色,webview为蓝色

当你将设备旋转到横向模式时,蓝色的webview会自动伸展,填满整个屏幕宽度


我希望webview被放置在横向模式的中心,同样它也是在纵向模式?请帮助我理解这一点和任何修复

为什么不
在横向布局中为宽度包裹内容
,然后将
布局重力
设置为
“中心”

试试这个

<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>


如果在WebView中加载视频,则在WebView中进行对齐是html任务。将视频包装在
中,并添加适当的样式(在
css
文件中或作为标签中的
style
属性):


//您的视频对象放置在此处

您也可以在VideoView中播放视频,但这项技术将有点困难。简单地说,您必须在WebView上面添加一个FrameLayout,通过html文件获取视频视图应该放置的坐标,并使用坐标为VideoView应用LayoutParams。若方向将改变,则应使用新坐标刷新VideoView。如果你对此感兴趣,我可以分享更多细节。

好吧,我可能太晚了。但是,我所做的是:

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。

你想让我为横向模式创建一个单独的布局吗?请详细说明。我想这是你已经在做的事情,但如果不是,那么是的。另一种解决方案是简单地将WebView上的布局重心设置为中心,因为您要将其添加到线性布局中。此外,您知道您可以从xml资源膨胀WebView,因此不必在代码中设置所有参数。事实上,我不知道你为什么不把WebView放到你的布局文件中,然后在活动中通过它的id找到它。这只是一个示例。在真实的项目中实现你建议的相同内容。你需要在第二个线性布局中使用安卓:layout\u gravity=“center”。
@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);
}