android webview占据整个屏幕

Joh*_*ark 1 android webview

我是开发Android应用程序的新手,我正在制作一个基本的Web浏览器.到目前为止,我已经或多或少地按照我想要的方式工作了.我遇到的问题是一些网站加载全屏并覆盖我的按钮和editText的URL.例如reddit.com或notcot.org等网站显示在webview的给定区域,但facebook.com或yahoo.com等网站将重新加载并占据整个屏幕,覆盖我的按钮和editText栏,让我使用模拟器返回按钮而不是我制作的按钮.我真的不确定问题是什么,因为它似乎只发生在一些网站而不是其他网站.这是XML:

<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"
android:gravity="center"
android:orientation="vertical"
tools:context=".ShowWeb" 
>

<LinearLayout
    android:id="@+id/linear1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 
>
    <ImageButton
        android:id="@+id/backButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="@null"
        android:onClick="onClick"
        android:src="@drawable/leftarrow" 
    />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:layout_marginLeft="10dp"
        android:background="@color/white"
        android:hint="@string/hint"
        android:inputType="textUri" 
        android:isScrollContainer="true"
        android:maxWidth="225dp"
        android:scrollHorizontally="true"/>

   <ImageButton
        android:id="@+id/goButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
         android:layout_marginRight="5dp"
        android:background="@null"
        android:layout_gravity="center"
        android:onClick="onClick"
        android:src="@drawable/go" 
    />

    <ImageButton
        android:id="@+id/forwardButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="@null"
        android:onClick="onClick"
        android:src="@drawable/rightarrow" 
     />   

  </LinearLayout>

   <WebView
       android:id="@+id/webBrowser"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_below="@+id/linear1" 
   />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

而Java代码是

import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.EditText;
import android.widget.ImageButton;

public class ShowWeb extends Activity implements OnClickListener 
{
ImageButton forward,back,go;
WebView wv;
String urlString;
EditText et;


@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_web);
    forward = (ImageButton)findViewById(R.id.forwardButton);
    forward.setOnClickListener(this);
    back = (ImageButton)findViewById(R.id.backButton);
    back.setOnClickListener(this);
    go = (ImageButton)findViewById(R.id.goButton);
    go.setOnClickListener(this);
    wv=(WebView)findViewById(R.id.webBrowser);
    wv.setInitialScale(50);
    wv.setVerticalScrollBarEnabled(true);
    wv.setHorizontalScrollBarEnabled(true);
    wv.loadUrl("http://www.google.com");
    et=(EditText)findViewById(R.id.editText1);
    et.setHorizontalScrollBarEnabled(true);
    et.setOnKeyListener(new View.OnKeyListener() 
    {
         public boolean onKey(View v, int keyCode, KeyEvent event) 
         {
         if((event.getAction()==KeyEvent.ACTION_DOWN)&& 
                 keyCode==KeyEvent.KEYCODE_ENTER)
         { 
             try
             {
               URL url = new URL(et.getText().toString());
               urlString=url.toString();
               wv.setInitialScale(50);
               wv.loadUrl(urlString);

             }
             catch(MalformedURLException e)
             {
                urlString = et.getText().toString(); 
                wv.setInitialScale(50);
                wv.loadData(urlString, "text/html", "UTF-8");


             }
             return true;
         }        
         else    
             return false;
         }
    }
    );
    wv.getSettings().setJavaScriptEnabled(true);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.show_web, menu);
    return true;
}


@Override
public void onClick(View v) 
{
    switch(v.getId()) 
    {
        case R.id.forwardButton:
            if(wv.canGoForward())
                wv.goForward();
                et.setText(wv.getUrl());
            break;
        case R.id.backButton:
            if(wv.canGoBack())
                wv.goBack();
                et.setText(wv.getUrl());

            break;
            case R.id.goButton:
            wv.setInitialScale(50);
            wv.loadUrl(urlString);

    }

}

}
Run Code Online (Sandbox Code Playgroud)

感谢任何关于我没有看到的提示或建议.

bgp*_*aya 5

您必须覆盖WebViewClient,如下面的代码所示:

private class HelloWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {
        view.loadUrl(url);
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在你的onCreate方法中:

wm.setWebViewClient(new HelloWebViewClient());
Run Code Online (Sandbox Code Playgroud)

所有这些都可以让你在webview中打开链接,你总能看到你的按钮.