加载WebView可防止在布局中加载其他视图

时间:2018-05-24 13:20:55

标签: android layout webview load render

我正在尝试使用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>

2 个答案:

答案 0 :(得分:2)

删除此

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(web视图);

附加并显示webView实例

setContentView

  

Set the activity content to an explicit view. This view is placed directly into the activity's view hierarchy。它本身就是一个   复杂的视图层次。调用此方法时,布局   忽略指定视图的参数。 Both the width and the   height of the view are set by default to MATCH_PARENT.使用您自己的   布局参数,调用setContentView(android.view.View,   相反,android.view.ViewGroup.LayoutParams。

@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);
}

答案 1 :(得分:1)

删除这些代码,它可以按预期工作

  

if(webView.getParent()!= null){           ((ViewGroup中)webView.getParent())removeView(web视图)。       }       的setContentView(web视图);

你的最终代码应该是:

  

@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(真)。       字符串WEB_URL =&#34; https://www.google.ca/&#34 ;;       webView.loadUrl(的web_url); }