Android:UI控件DrawerLayout、Fragment、SlidingLayout、侧滑菜单
DrawerLayout与Fragment的联用 1.xml代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <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" > <FrameLayout android:id= "@+id/fragment_layout" android:layout_width= "match_parent" android:layout_height= "match_parent" > </FrameLayout> <RelativeLayout android:id= "@+id/menu_layout" android:layout_width= "300dp" android:layout_height= "match_parent" android:layout_gravity= "left" android:background= "#ff333333" > <ListView android:id= "@+id/menu_listView" android:layout_width= "match_parent" android:layout_height= "match_parent" > </ListView> </RelativeLayout> </android.support.v4.widget.DrawerLayout> 2.MainActivity继承FragmentActivity 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 import android.os.Bundle; import android.app.Activity; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.AdapterView.OnItemClickListener; public class MainActivity extends FragmentActivity { /* * DrawerLayout与Fragment的联用 * DrawerLayout相关: * 1.一般内容层使用framelayout * 2.slidingLayout需要设置一个layout_grative属性 * 文档建议使用android:layout_gravity="start" */ public static final String[] TITLES = { "Henry IV (1)" , "Henry V" , "Henry VIII" , "Richard II" , "Richard III" , "Merchant of Venice" , "Othello" , "King Lear" }; private DrawerLayout mDrawer_layout; private RelativeLayout mMenu_layout; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDrawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout); mMenu_layout = (RelativeLayout) findViewById(R.id.menu_layout); ListView menu_listview = (ListView) mMenu_layout.findViewById(R.id.menu_listView); menu_listview.setAdapter( new ArrayAdapter<String>( this , android.R.layout.simple_expandable_list_item_1, TITLES)); //监听菜单 menu_listview.setOnItemClickListener( new DrawerItemClickListener()); } public class DrawerItemClickListener implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); Fragment fragment = null ; //根据item点击行号判断启用哪个Fragment switch (position) { case 0 : fragment = new FirstFragment(); break ; case 1 : fragment = new NextFragment(); break ; default : break ; } ft.replace(R.id.fragment_layout, fragment); ft.commit(); mDrawer_layout.closeDrawer(mMenu_layout); //点击后关闭mMenu_layout } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true ; } } 3.Fragment类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class FirstFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View layout = inflater.inflate(R.layout.firstlayout, null ); return layout; } } 1 2 3 4 5 6 7 8 9 public class NextFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View layout = inflater.inflate(R.layout.nextlayout, null ); return layout; } } 本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1229561,如需转载请自行联系原作者