在webview中实现搜索栏和地址栏

时间:2014-02-14 03:45:02

标签: android webview searchbar

我有一个Webview以及一个编辑文本字段作为地址栏,但问题是,每当我输入“http://www.google.co.in”时,地址栏工作正常,但当我输入“Google”时,它不起作用。下面是我的网页浏览

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
/** Called when the activity is first created. */
EditText URLText;
Button GoButton;
WebView Browser;
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
   view.loadUrl(url);
   return true;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    URLText = (EditText)findViewById(R.id.URL);
    GoButton = (Button)findViewById(R.id.Go);
    Browser = (WebView) findViewById(R.id.WebEngine);
    Browser.loadUrl("http://www.google.co.in/");

     GoButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Browser.setWebViewClient(new MyWebViewClient());
Browser.loadUrl("http://"+URLText.getText().toString());
}
});
}
}

1 个答案:

答案 0 :(得分:0)

我做了同样的事情。请按照以下代码完成任务。

case R.id.btnGo:
        if (medSearch.getText().toString().startsWith("http://")
                && medSearch.getText().toString().endsWith(".com") || medSearch.getText().toString().endsWith(".in") || medSearch.getText().toString().endsWith(".ac.in")) {
            mWebView.loadUrl(medSearch.getText().toString());
        } else {
            mWebView.loadUrl("http://" + medSearch.getText().toString()
                    + ".com");
        }

        break;

其中,medSearch是用于搜索的EditText。

在Patteren和Matcher的帮助下,你也可以做同样的事情来获得完美的结果:

private boolean isValidUrl(String strUrl) {
Pattern mUrlPatteren = Patterns.WEB_URL;
Matcher mUrlMatcher = mUrlPatteren.matcher(strUrl);
if(mUrlMatcher.matches())
    return true;
else
return false;

}