加载 WebView 会阻止布局中加载其他视图
Loading WebView prevents other views from being loaded in the layout
我正在尝试创建一个包含 WebView 和其他视图(例如 TextView)的布局。
根据下面的代码,我希望 WebView 显示在高度的前 300dp 处,而 TextView 显示在屏幕底部,文本 'Test Text'
现在,当将 url 加载到 WebView 的代码是 运行(使用下面的代码片段)时,WebView 会成功加载 url、然而,其他视图被忽略且未加载。
谁能帮我在同一屏幕上加载 WebView 和其他视图?
我尝试在以下之间切换:
WebView webView = findViewById(R.id.temp_web_view);
和
WebView webView = findViewById(this);
此外,
setContentView(webView);
和
setContentView(R.layout.activity_profiling_result);
但到目前为止运气不好..
SomeActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profiling_result);
WebView webView = findViewById(R.id.temp_web_view);
// must call removeView() on the child's parent first.
if (webView.getParent() != null) {
((ViewGroup)webView.getParent()).removeView(webView);
}
setContentView(webView);
webView.getSettings().setJavaScriptEnabled(true);
String WEB_URL = "https://www.google.ca/";
webView.loadUrl(WEB_URL);
}
activity_profiling_result.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<WebView
android:id="@+id/temp_web_view"
android:layout_width="match_parent"
android:layout_height="300dp" />
<TextView
android:id="@+id/temp_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Test Text" />
</RelativeLayout>
删除这个
setContentView(webView);
// must call removeView() on the child's parent first.
if (webView.getParent() != null) {
// this will remove the webView from the customise layout
((ViewGroup)webView.getParent()).removeView(webView);
}
因为它将用 webView
个实例替换整个布局。
setContentView(R.layout.activity_profiling_result);
附加并显示自定义布局(您的 webView 或 textview 等)
setContentView(webView);
附加并显示 webView 实例
Set the activity content to an explicit view. This view is placed
directly into the activity's view hierarchy
. It can itself be a
complex view hierarchy. When calling this method, the layout
parameters of the specified view are ignored. Both the width and the
height of the view are set by default to MATCH_PARENT.
To use your own
layout parameters, invoke setContentView(android.view.View,
android.view.ViewGroup.LayoutParams) instead.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profiling_result);
WebView webView = findViewById(R.id.temp_web_view);
// must call removeView() on the child's parent first.
//if (webView.getParent() != null) {
//((ViewGroup)webView.getParent()).removeView(webView);
//}
//setContentView(webView);
webView.getSettings().setJavaScriptEnabled(true);
String WEB_URL = "https://www.google.ca/";
webView.loadUrl(WEB_URL);
}
删除这些代码,它将按您预期的方式工作
if (webView.getParent() != null) {
((ViewGroup)webView.getParent()).removeView(webView);
}
setContentView(webView);
你的最终代码应该是:
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profiling_result);
WebView webView = findViewById(R.id.temp_web_view);
webView.getSettings().setJavaScriptEnabled(true);
String WEB_URL = "https://www.google.ca/";
webView.loadUrl(WEB_URL); }
我正在尝试创建一个包含 WebView 和其他视图(例如 TextView)的布局。
根据下面的代码,我希望 WebView 显示在高度的前 300dp 处,而 TextView 显示在屏幕底部,文本 'Test Text'
现在,当将 url 加载到 WebView 的代码是 运行(使用下面的代码片段)时,WebView 会成功加载 url、然而,其他视图被忽略且未加载。
谁能帮我在同一屏幕上加载 WebView 和其他视图?
我尝试在以下之间切换:
WebView webView = findViewById(R.id.temp_web_view);
和
WebView webView = findViewById(this);
此外,
setContentView(webView);
和
setContentView(R.layout.activity_profiling_result);
但到目前为止运气不好..
SomeActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profiling_result);
WebView webView = findViewById(R.id.temp_web_view);
// must call removeView() on the child's parent first.
if (webView.getParent() != null) {
((ViewGroup)webView.getParent()).removeView(webView);
}
setContentView(webView);
webView.getSettings().setJavaScriptEnabled(true);
String WEB_URL = "https://www.google.ca/";
webView.loadUrl(WEB_URL);
}
activity_profiling_result.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<WebView
android:id="@+id/temp_web_view"
android:layout_width="match_parent"
android:layout_height="300dp" />
<TextView
android:id="@+id/temp_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Test Text" />
</RelativeLayout>
删除这个
setContentView(webView);
// must call removeView() on the child's parent first.
if (webView.getParent() != null) {
// this will remove the webView from the customise layout
((ViewGroup)webView.getParent()).removeView(webView);
}
因为它将用 webView
个实例替换整个布局。
setContentView(R.layout.activity_profiling_result);
附加并显示自定义布局(您的 webView 或 textview 等)
setContentView(webView);
附加并显示 webView 实例
Set the activity content to an explicit view. This view is placed directly into the activity's view hierarchy
. It can itself be a complex view hierarchy. When calling this method, the layout parameters of the specified view are ignored.Both the width and the
height of the view are set by default to MATCH_PARENT.
To use your own layout parameters, invoke setContentView(android.view.View, android.view.ViewGroup.LayoutParams) instead.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profiling_result);
WebView webView = findViewById(R.id.temp_web_view);
// must call removeView() on the child's parent first.
//if (webView.getParent() != null) {
//((ViewGroup)webView.getParent()).removeView(webView);
//}
//setContentView(webView);
webView.getSettings().setJavaScriptEnabled(true);
String WEB_URL = "https://www.google.ca/";
webView.loadUrl(WEB_URL);
}
删除这些代码,它将按您预期的方式工作
if (webView.getParent() != null) { ((ViewGroup)webView.getParent()).removeView(webView); } setContentView(webView);
你的最终代码应该是:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_profiling_result); WebView webView = findViewById(R.id.temp_web_view); webView.getSettings().setJavaScriptEnabled(true); String WEB_URL = "https://www.google.ca/"; webView.loadUrl(WEB_URL); }