我今年 16 岁,正在尝试学习 Kotlin,我是个新手。我想创建一个搜索栏来搜索 Google 并可以打开您输入的任何 URL。我试图使用 if else
语句,例如:
if
前三个字母是“www”。然后使用等于“https://”的字符串 url,else
使用等于“google.com/search?q="; 的字符串 start_url。
我只是不知道该怎么做,我尝试过在互联网上寻求帮助,但我找不到。
URLUtil.isValidUrl(url) 将不起作用,因为它仍然只加载 Google 搜索
我愿意接受任何评论,以尝试帮助我进一步学习和改进我的代码,即使它与我的问题无关。指出我的代码中的任何错误或可以改进的地方,我知道它并不完美,谢谢!
package com.example.corie.quicklinks.mainpages
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.asynclayoutinflater.R.id.text
import android.webkit.WebChromeClient
import android.webkit.WebViewClient
import com.example.corie.quicklinks.R
import com.example.corie.quicklinks.R.string.start_url
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//------------------WEBVIEW-----------------//
webViewOne.webChromeClient = WebChromeClient()
webViewOne.isVerticalScrollBarEnabled = false
webViewOne.run{
webViewOne.loadUrl("https://" + getString(start_url))
}
goBtn.setOnClickListener{
webViewOne.loadUrl("https://www.google.com/search?q=" + editText.text.toString())
}
backBtn.setOnClickListener {
if (webViewOne.canGoBack())
webViewOne.goBack()
}
nextBtn.setOnClickListener {
if (webViewOne.canGoForward())
webViewOne.goForward()
}
//------------------WEBVIEW-----------------//
}
}
最佳答案
简单的内置正则表达式模式:
import android.util.Patterns
val isAddress = Patterns.WEB_URL.matcher(address).matches()
if (isAddress) {
this@WebpageFragment.mBinding.webpageWebView
.loadUrl(address)
} else {
this@WebpageFragment.mBinding.webpageWebView.loadUrl(
"https://www.google.com/search?q=$address"
)
}
说明:首先需要检查字符串是否为URL。如果它是一个 URL,您将使用 webview 加载该 URL;否则,您将需要将该值用作谷歌搜索查询。
关于android - 制作一个搜索谷歌和 URL 的 webview 搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51893645/