如何在 WebView 中显示网页?
How do I display a web page in a WebView?
在我的简单应用程序中,我在 ListView 中有三个 ListItem。列表中的一项名为 Homepage。创建这个项目的目的是我希望一旦用户点击那个项目,它应该在 WebView 部分显示一个网页。比方说,在单击 主页 后,Facebook 网站 (facebook.com) 将显示在 Webview 上。我该怎么做?
我的代码:
MainActivity.java:
public class MainActivity extends ActionBarActivity {
TextView textView;
WebView webView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] list = {"About Company", "HomePage", "Contact"};
Adapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
ListView listView = (ListView) findViewById(R.id.listId);
listView.setAdapter((ListAdapter) adapter);
textView=(TextView)findViewById(R.id.textViewId);
webView=(WebView)findViewById(R.id.webViewId);
//click the first Item
listView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id ) {
//String listPosition = String.valueOf(parent.getItemAtPosition(position))
textView.setText("NAME: Facebook\nADDRESS: USA);
}
}
);
//click the second item (Homepage)
//then display the facebook.com
}
}
.xml:
<
TextView
android:layout_width="match_parent"
android:layout_height="120dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/textViewId"
android:layout_centerHorizontal="true"
android:layout_marginTop="210dp"
android:background="#58b0b0"
android:textAlignment="center" />
<ListView
android:layout_width="match_parent"
android:layout_height="150dp"
android:id="@+id/listId"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="#f79727" />
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webViewId"
android:layout_below="@+id/textViewId"
android:layout_centerHorizontal="true"
android:layout_marginTop="56dp" />
[注:我有RelativeLayout用于设计。 ]
首先在你的AndroidManifest上添加上网权限。
<uses-permission android:name="android.permission.INTERNET"/>
现在在您的 class 上:
public class MainActivity extends ActionBarActivity {
WebView webViewId;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Get webview
webViewId = (WebView) findViewById(R.id.webViewId);
webViewId.getSettings().setJavaScriptEnabled(true);
webViewId.getSettings().setLoadWithOverviewMode(true);
webViewId.getSettings().setUseWideViewPort(true);
webViewId.getSettings().setBuiltInZoomControls(true);
webViewId.getSettings().setPluginState(WebSettings.PluginState.ON);
webViewId.getSettings().setPluginsEnabled(true);
webViewId.setWebViewClient(new HelloWebViewClient());
//load url
webViewId.loadUrl("http://www.facebook.com");
//.........//
}//end oncreate
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
}
现在您可以更改 webViewId.loadUrl("http://www.facebook.com");
对于在您的 ListView 上单击的每个项目列表 url
建议
不要用RelativeLayouts,总是用FrameLayout或者LinearLayouts,适应不同的屏幕效果更好
在我的简单应用程序中,我在 ListView 中有三个 ListItem。列表中的一项名为 Homepage。创建这个项目的目的是我希望一旦用户点击那个项目,它应该在 WebView 部分显示一个网页。比方说,在单击 主页 后,Facebook 网站 (facebook.com) 将显示在 Webview 上。我该怎么做?
我的代码:
MainActivity.java:
public class MainActivity extends ActionBarActivity {
TextView textView;
WebView webView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] list = {"About Company", "HomePage", "Contact"};
Adapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
ListView listView = (ListView) findViewById(R.id.listId);
listView.setAdapter((ListAdapter) adapter);
textView=(TextView)findViewById(R.id.textViewId);
webView=(WebView)findViewById(R.id.webViewId);
//click the first Item
listView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id ) {
//String listPosition = String.valueOf(parent.getItemAtPosition(position))
textView.setText("NAME: Facebook\nADDRESS: USA);
}
}
);
//click the second item (Homepage)
//then display the facebook.com
}
}
.xml:
<
TextView
android:layout_width="match_parent"
android:layout_height="120dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/textViewId"
android:layout_centerHorizontal="true"
android:layout_marginTop="210dp"
android:background="#58b0b0"
android:textAlignment="center" />
<ListView
android:layout_width="match_parent"
android:layout_height="150dp"
android:id="@+id/listId"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="#f79727" />
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webViewId"
android:layout_below="@+id/textViewId"
android:layout_centerHorizontal="true"
android:layout_marginTop="56dp" />
[注:我有RelativeLayout用于设计。 ]
首先在你的AndroidManifest上添加上网权限。
<uses-permission android:name="android.permission.INTERNET"/>
现在在您的 class 上:
public class MainActivity extends ActionBarActivity {
WebView webViewId;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Get webview
webViewId = (WebView) findViewById(R.id.webViewId);
webViewId.getSettings().setJavaScriptEnabled(true);
webViewId.getSettings().setLoadWithOverviewMode(true);
webViewId.getSettings().setUseWideViewPort(true);
webViewId.getSettings().setBuiltInZoomControls(true);
webViewId.getSettings().setPluginState(WebSettings.PluginState.ON);
webViewId.getSettings().setPluginsEnabled(true);
webViewId.setWebViewClient(new HelloWebViewClient());
//load url
webViewId.loadUrl("http://www.facebook.com");
//.........//
}//end oncreate
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
}
现在您可以更改 webViewId.loadUrl("http://www.facebook.com");
对于在您的 ListView 上单击的每个项目列表 url
建议
不要用RelativeLayouts,总是用FrameLayout或者LinearLayouts,适应不同的屏幕效果更好