介绍
有时候我们需要显示我们的Android应用程序的一些在线内容。这将是非常有益的,如果我们可以用它直接在我们的应用程序会显示这样的在线内容的控制。该WebView控件提供了这个功能对我们的Android应用程序。它使我们能够嵌入在我们的活动Web浏览器。
使用WebView控件,我们可以显示在线内容,以及存储在我们的项目中的任何HTML页面。
背景
在这篇文章中,我已经使用了EditView中控制接受网页的URL或本地页面。在加入A WebView控件来呈现在设备上的网页。输入URL后按下执行按钮将导致在web视图控制要显示的页面。
使用代码
为了让我们的活动来访问互联网和加载网页的WebView中,我们需要指定为我们的应用程序的Internet权限的AndroidManifest.xml如下文件:
<uses-permission android:name="android.permission.INTERNET"/>
以下是的代码的AndroidManifest.xml文件。
<xml version="1.0" encoding="utf-8">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.azim" >
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我已经使用了嵌套如下的线性布局,以显示TextView的,EditView中,按钮和控制的WebView。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/txtWebUrl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter URL: " />
<EditText
android:id="@+id/edtWebUrl"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/btnGo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="showPage"
android:text="Go"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<WebView
android:id="@+id/myWebView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
该机器人:的onClick
在上面的代码的按钮来查看的属性指定SHOWPAGE()
方法是转到按钮的Click事件的事件处理。
在使用loadURL()
web视图控制的方法,用于加载的网页被显示。所述setBuiltInZoomControls()
的方法WebSettings
类可用于显示内置变焦控制。所述setJavaScriptEnabled()
的方法WebSettings
类可用于启用在页面上的JavaScript。下面的代码片段被用于加载谷歌网站的主页以及显示内置变焦控制:
view=(WebView)findViewById(R.id.myWebView); WebSettings settings=view.getSettings(); settings.setBuiltInZoomControls(true); settings.setJavaScriptEnabled(true); view.setWebViewClient(new Callback()); view.loadUrl("http://www.google.com");
在上面的代码中,setWebViewClient()
方法可以防止装载在我们的设备的浏览器的URL。我们需要覆盖的onkeydown()
我们的活动的方法,以便能够在web视图的历史可以追溯到前一页。以下是对的代码的onkeydown()
方法。
public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK && view.canGoBack()) { view.goBack(); return true; } else { return super.onKeyDown(keyCode,event); } }
转到按钮的下面单击事件处理程序显示其URL是在控制的EditText用户输入的页面。
public void showPage(View v) { view.setWebViewClient(new Callback()); view.loadUrl(text.getText().toString()); }
最后,我们需要重写shouldOverrideUrlLoading()
的方法WebViewClient
类如下,以防止在我们的设备的浏览器被打开的部位。
class Callback extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } }
以下是应用程序的执行输出。
:如果我们有存储在该项目的资产文件夹叫的Hello.html一个HTML文件,它可以使用下面的URL打开 文件:///android_asset/Hello.html
兴趣点
我希望这篇文章能帮助读者理解WebView控件的工作。