主布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--内容布局-->
<FrameLayout
android:id="@+id/content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!--侧拉菜单列表-->
<ListView
android:id="@+id/drawer_list"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/colorPrimaryDark"
android:choiceMode="singleChoice"/>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
主Activity
<pre style="background-color: rgb(190, 237, 190); font-family: Consolas; font-size: 10.5pt;"><pre name="code" class="java">import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private List<String> mData = new ArrayList<>();
private ActionBarDrawerToggle mDrawerToggle;
private String mTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTitle = (String) getTitle();//获取应用默认名称
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.drawer_list);
mData.addAll(Arrays.asList("新浪", "百度", "腾讯"));
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout
.simple_list_item_1, mData);
mDrawerList.setAdapter(adapter);//给ListView填充List<String>
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mTitle = mData.get(position);
ContentFragment fragment = ContentFragment.newInstance(mTitle);
getSupportFragmentManager().beginTransaction().replace(R.id.content_layout,
fragment).commit();
mDrawerLayout.closeDrawer(mDrawerList);//点击后关闭侧拉菜单
}
});//给ListView设置列表项点击事件
//显示并启用操作栏Home键
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);//显示操作栏的Home键
getSupportActionBar().setHomeButtonEnabled(true);//启用Home键
}
//使用ActionBarDrawerToggle监听侧拉菜单的弹出和关闭
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string
.close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getSupportActionBar().setTitle("请选择");
invalidateOptionsMenu();//重绘工具栏,调用onPrepareOptionsMenu(Menu menu)实现工具栏标题和菜单的显示和隐藏
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getSupportActionBar().setTitle(mTitle);
invalidateOptionsMenu();
}
};
mDrawerLayout.addDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();//同步更新操作栏Home键的图标
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.options_main, menu);//使用MenuInflater解析菜单资源并添加到menu中
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//mDrawerToggle监听操作栏Home键,实现操作栏Home键控制侧拉菜单的弹出和关闭
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean isDrawerOpened = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_search).setVisible(!isDrawerOpened);
return super.onPrepareOptionsMenu(menu);
}
}
Fragment布局
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:id="@+id/web_view" android:layout_width="match_parent" android:layout_height="match_parent"/> </FrameLayout>
Fragment的实现
import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.webkit.WebViewClient; public class ContentFragment extends Fragment { public static ContentFragment newInstance(String title) { Bundle args = new Bundle(); args.putString("title", title); ContentFragment fragment = new ContentFragment(); fragment.setArguments(args); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_content, container, false); WebView webView = (WebView) view.findViewById(R.id.web_view); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient()); String title = getArguments().getString("title"); webView.loadUrl(parseAddress(title)); return view; } private String parseAddress(String title) { String address = null; switch (title) { case "百度": address = "baidu"; break; case "新浪": address = "sina"; break; case "腾讯": address = "qq"; break; default: break; } return "http://www." + address + ".com"; } }