iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
0

WebView

Web View

實作WebView

建立一個 EditText & Button

使用者可以透過按下搜尋按鈕或是在輸入關鍵字後點擊確認後進行搜尋

按下返回鍵可以回到上一頁

實作中注意事項

1.Android 7.0 之後需要在 AndroidManifest 中取得使用者的 Internet 權限

AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

2.需要實作 WebViewClient 並且透過 setWebClient ,使用如果直接載入 URL Android 會自動載入 Browser。

MainActivity.kt

class MainActivity : AppCompatActivity() {

    val webViewClient = WebViewClient()
    var text:String = ""

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        webView.setWebViewClient(webViewClient)
        webView.loadUrl("https://www.google.com")
        
        ...
        
        }
        }
        

3.搜尋的功能透過loadUrl的方式觸發

但需要注意 google 搜尋的網址是 "https://www.google.com/search?q=<你輸入的關鍵字>"

4.想要獲得回上一頁功能可以透過 override onBackPressed 方式獲得

MainActivity.kt

override fun onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack()
        } else {
            super.onBackPressed()
        }
        return
    }

webView 裡有提供 function canGoBack 來確認是否有上一頁可以回去。

我們做判斷如果有上一頁,我們就可以使用 goBack 回去 Web 的上一頁。

如果沒有上一頁可以回去,我們就使用原始的 onBackPressed 回到 Home

5.透過 InputMethodManager 來管理小鍵盤

MainActivity.kt

private fun hidekeyboard() {
        val imm = this.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(this.window.decorView.windowToken, 0)
    }

首先我們先實例化一個 InputMethodManager
然後使用 hideSoftInputFromWindow 這個 function 需要兩個參數,分別是 window token 跟 flag。

window token 我們可以由 edittext 裡拿到 或是從 View 裡取得。

flag 通常使用預設 0 ,如果有其他需求可以看 這裡

今天就先到這裡囉,我們明天見~~


上一篇
Day8_ScalableImageView
下一篇
Day10_ImageList(RecyclerView實作)
系列文
發現新大陸-Android Kotlin 開發之路30

尚未有邦友留言

立即登入留言