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