<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayoutandroid:id="@+id/content_frame"android:layout_width="match_parent"android:layout_height="match_parent" /> <ListViewandroid:id="@+id/left_drawer"android:layout_width="240dp"android:layout_height="match_parent"android:layout_gravity="start"android:choiceMode="singleChoice"android:divider="@android:color/transparent"android:dividerHeight="0dp"android:background="#111"/></android.support.v4.widget.DrawerLayout>Drawer positioning and layout is controlled using the android:layout_gravity attribute on child views corresponding to which side of the view you want the drawer to emerge from: left or right.
public class PageFragment extends Fragment {public final static String ITEM_POSITION_NUMBER = "item_position_num";public PageFragment(){}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View convertView = inflater.inflate(R.layout.page_fragment_layout, null); TextView tv = (TextView) convertView.findViewById(R.id.textView); int num = getArguments().getInt(ITEM_POSITION_NUMBER); //从res/array中获取list数据 String[] dynastyList = getResources().getStringArray(R.array.list_item); tv.setText(dynastyList[num]); return convertView;} }代码中可以看出当我们在左侧菜单中选择SelectItem时会把对应的值显示到内容区。private ListView menuList;private String[] mMenuTitles;private String[] historyTitles;private String[] musicTitles;private String[] movieTitles;private String[] listTitles; // 历史栏historyTitles = getResources().getStringArray(R.array.history);// 音乐栏musicTitles = getResources().getStringArray(R.array.music);// 电影栏movieTitles = getResources().getStringArray(R.array.movie);// 标题数组mMenuTitles = getResources().getStringArray(R.array.title);// 每一項的標題listTitles = getResources().getStringArray(R.array.list_item);drawLayout = (DrawerLayout) findViewById(R.id.drawer_layout);menuList = (ListView) findViewById(R.id.left_menu);// 设置菜单阴影效果// drawLayout.setDrawerShadow(R.drawable.drawer_shadow,// GravityCompat.START);List<Item> list = new ArrayList<Item>();// 菜单加入历史标题和历史项HeaderItem historyHeader = new HeaderItem(mMenuTitles[0]);list.add(historyHeader);for (int i = 0; i < historyTitles.length; i++) { EventItem historyitem = new EventItem(historyTitles[i]); list.add(historyitem);}// 菜单加入音乐标题和音乐项HeaderItem musicHeader = new HeaderItem(mMenuTitles[1]);list.add(musicHeader);for (int i = 0; i < musicTitles.length; i++) { EventItem musicItem = new EventItem(musicTitles[i]); list.add(musicItem);}// 菜单加入电影标题和电影项HeaderItem movieHeader = new HeaderItem(mMenuTitles[2]);list.add(movieHeader);for (int i = 0; i < movieTitles.length; i++) { EventItem movieItem = new EventItem(movieTitles[i]); list.add(movieItem);}MyListAdapter adapter = new MyListAdapter(this, list);menuList.setAdapter(adapter);这个数据填充有点麻烦。自定义ListAdapter然后进行适配。<?xml version="1.0" encoding="utf-8"?><resources> <string-array name="history"><item >三国</item><item >楚汉</item><item >春秋</item><item >战国</item> </string-array><string-array name="music"><item >爵士</item><item >古典</item><item >现代</item><item >民谣</item> </string-array><string-array name="movie"><item >悬疑</item><item >爱情</item><item >历史</item><item >恐怖</item> </string-array> <string-array name="title"><item >历史</item><item >音樂</item><item >电影</item> </string-array> <string-array name="list_item"><item >歷史</item><item >三国</item><item >楚汉</item><item >春秋</item><item >战国</item><item >音樂</item><item >爵士</item><item >古典</item><item >现代</item><item >民谣</item><item >電影</item><item >悬疑</item><item >爱情</item><item >历史</item><item >恐怖</item> </string-array></resources>然后就是listView的监听:
private void initListener() {// 菜单单击事件监听器menuList.setOnItemClickListener(new DrawerItemClickListener()); } /* The click listner for ListView in the navigation drawer */ private class DrawerItemClickListener implements ListView.OnItemClickListener {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) { Log.i("Light", "position:" + position); selectItem(position);} } private void selectItem(int position) {// update the main content by replacing fragmentsPageFragment fragment = new PageFragment();// 将当前选择的项传递到FragmentBundle args = new Bundle();args.putInt(PageFragment.ITEM_POSITION_NUMBER, position);fragment.setArguments(args);FragmentTransaction ft = MainActivity.this.getSupportFragmentManager().beginTransaction();ft.replace(R.id.content_frame, fragment).commit();drawLayout.closeDrawer(menuList);// update selected item and title, then close the drawermenuList.setItemChecked(position, true);// 注意这里改变的是ActionBar的标题getActionBar().setTitle(listTitles[position]); }我们关心的是当某一个Item被点击时会发生什么即代码: private void selectItem(int position) {// update the main content by replacing fragmentsPageFragment fragment = new PageFragment();// 将当前选择的项传递到FragmentBundle args = new Bundle();args.putInt(PageFragment.ITEM_POSITION_NUMBER, position);fragment.setArguments(args);FragmentTransaction ft = MainActivity.this.getSupportFragmentManager().beginTransaction();ft.replace(R.id.content_frame, fragment).commit();drawLayout.closeDrawer(menuList);// update selected item and title, then close the drawermenuList.setItemChecked(position, true);// 注意这里改变的是ActionBar的标题getActionBar().setTitle(listTitles[position]); }从代码中可以看出 
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。