WebView使用场景:有时候我们会碰到特殊情况,比如在App里展示一些网页,加载和现实网页是浏览器的活,需求限制不能打开浏览器,我们也不可能内嵌一个浏览器,这时,WebView就是“You can You up”时刻
WebView基本用法:
先上代码: activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.administrator.net.MainActivity">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.1">
<EditText
android:id="@+id/address"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.75"
android:inputType="textCapSentences|textMultiLine"
android:maxLength="2000"
android:maxLines="5"
android:background="@null"
/>
<Button
android:id="@+id/Go"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.25"
android:minWidth="150dp"
android:text="Go"
android:layout_marginBottom="0dp"
android:layout_alignParentBottom="true"
android:background="@drawable/selector">
</Button>
</LinearLayout>
<WebView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.3"
android:id="@+id/web_view"></WebView>
</LinearLayout
MainActivity.java
public class MainActivity extends AppCompatActivity {
private WebView webView;
private EditText editText;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText= (EditText) findViewById(R.id.address);
webView= (WebView) findViewById(R.id.web_view);
button= (Button) findViewById(R.id.Go);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//让WebView支持JavaScript
webView.getSettings().setJavaScriptEnabled(true);
/*
调用了 setWebViewClient(WebViewClient wc),这里重写
shouldOverrideUrlLoading(WebView view, String url),
表明当需要从一个网页跳转到另一个网页时,
我们希望目标网页仍然在WebView中,而不是打开系统浏览器
*/
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
});
/*
调用loadUrl(String Url)并将网址传入,即可展示网页内容
*/
webView.loadUrl(editText.getText().toString());
}
});
}
}
效果如下