Kotlin Android WebView

Android WebView是一个视图组件, 用于显示应用程序中的网页。它使用WebKit引擎显示网页。 android.webkit.WebView类是AbsoluteLayout类的子类。
WebView的loadUrl()和loadData()方法用于加载和显示网页。要了解有关Android WebView的更多信息, 请访问https://www.srcmini.com/android-webview-example
有多种方法可以在WebView中加载网页, 例如:
将HTML内容作为字符串加载到类中:

val wedData: String ="< html> < body> < h1> Hello, srcmini!< /h1> < /body> < /html> "val mimeType: String = "text/html"val utfType: String = "UTF-8"webView.loadData(wedData, mimeType, utfType)

从应用程序内加载网页(.html, .jsp等)。在这种情况下, 网页将放置在资产目录中。
webView.loadUrl("file:///android_asset/index.html")

将Web URL内的Web URL加载为:
webView.loadUrl("https://www.srcmini.com/")

Kotlin Android WebView示例 在此示例中, 我们将在WebView组件中加载Web URL并覆盖URL。
目录结构
Kotlin Android WebView

文章图片
activity_main.xml
在activity_main.xml文件中添加WebView组件。
< ?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="example.srcmini.com.kotlinwebview.MainActivity"> < WebViewandroid:id="@+id/webView"android:layout_width="fill_parent"android:layout_height="fill_parent"/> < /LinearLayout>

AndroidMenifest.xml
在AndroidMenifest.xml文件中, 添加Internet权限以连接网络连接。
< uses-permission android:name="android.permission.INTERNET"/> < ?xml version="1.0" encoding="utf-8"?> < manifest xmlns:android="http://schemas.android.com/apk/res/android"package="example.srcmini.com.kotlinwebview"> < uses-permission android:name="android.permission.INTERNET"/> < applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"> < activity android:name=".MainActivity"> < intent-filter> < action android:name="android.intent.action.MAIN" /> < category android:name="android.intent.category.LAUNCHER" /> < /intent-filter> < /activity> < /application> < /manifest>

MainActivity.kt
在MainActivity.kt类中添加以下代码。在此类中, 我们使用WebView的loadUrl()方法加载Web URL。
创建一个MyWebViewClient类, 该类扩展了WebViewClient, 该类重写了shouldOverrideUrlLoading()方法。
package example.srcmini.com.kotlinwebviewimport android.app.Activityimport android.os.Buildimport android.support.v7.app.AppCompatActivityimport android.os.Bundleimport android.support.annotation.RequiresApiimport android.webkit.WebResourceErrorimport android.webkit.WebResourceRequestimport android.webkit.WebViewimport android.webkit.WebViewClientimport android.widget.Toastimport kotlinx.android.synthetic.main.activity_main.*class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)/*val wedData: String ="< html> < body> < h1> Hello, srcmini!< /h1> < /body> < /html> "val mimeType: String = "text/html"val utfType: String = "UTF-8"webView.loadData(wedData, mimeType, utfType)*//* val myWebUrl: String = "file:///android_asset/index.html"webView.loadUrl(myWebUrl)*/webView.webViewClient = MyWebViewClient(this)webView.loadUrl("https://www.srcmini.com/")}class MyWebViewClient internal constructor(private val activity: Activity) : WebViewClient() {@RequiresApi(Build.VERSION_CODES.LOLLIPOP)override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {val url: String = request?.url.toString(); view?.loadUrl(url)return true}override fun shouldOverrideUrlLoading(webView: WebView, url: String): Boolean {webView.loadUrl(url)return true}override fun onReceivedError(view: WebView, request: WebResourceRequest, error: WebResourceError) {Toast.makeText(activity, "Got Error! $error", Toast.LENGTH_SHORT).show()}}}

【Kotlin Android WebView】输出:
Kotlin Android WebView

文章图片

    推荐阅读