Android DrawerLayout drawer
Android DrawerLayout drawer
DrawerLayout in supportV4 Lib, similar to the open-source slidemenu, the parent class of DrawerLayout is ViewGroup, And the custom components are basically extended.
Android. support. v4.widget. DrawerLayout
The following is a simple usage demonstration. Click the button in the upper left corner to open the drawer menu.
Click the corresponding ITEM to switch the corresponding content. Fragment is used in the content display. Here the ActionBar is not used for switching. <喎?http: www.bkjia.com kf ware vc " target="_blank" class="keylink"> VcD4NCjxwcmUgY2xhc3M9 "brush: java;"> <Framelayout android: id = "@ + id/fragment_container" android: layout_height = "match_parent" android: layout_width = "match_parent"> </framelayout>
Import android. content. res. configuration; import android. OS. bundle; import android. support. v4.app. fragment; import android. support. v4.app. fragmentActivity; import android. support. v4.widget. drawerLayout; import android. view. layoutInflater; import android. view. menu; import android. view. view; import android. view. view. onClickListener; import android. view. viewGroup; import android. widget. adapterView; import android. widget. baseAdapter; import android. widget. listView; import android. widget. textView; public class DrawerLayoutActivity extends FragmentActivity {private DrawerLayout mDrawerLayout; private ListView drawerContent; // drawer content @ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. drawer_layout); mDrawerLayout = (DrawerLayout) findViewById (R. id. drawer_layout); drawerContent = (ListView) findViewById (R. id. drawer_content); mDrawerLayout. setDrawerListener (new DemoDrawerListener (); addHeader (drawerContent); // ListView Header drawerContent. setAdapter (new MyAdapter (); drawerContent. setOnItemClickListener (new DrawerItemClickListener (); findViewById (R. id. slide ). setOnClickListener (new OnClickListener () {public void onClick (View arg0) {mDrawerLayout. openDrawer (drawerContent); // open the drawer content}); // display the default HOME getsuppfrfragmentmanager (). beginTransaction (). replace (R. id. fragment_container, new HomeFragment ()). commit ();} private void addHeader (ListView mDrawer2) {View view = LayoutInflater. from (this ). inflate (R. layout. list_header, null); mDrawer2.addHeaderView (view);} static String titles [] = {"Homepage", "company", "nearby", "setting "}; class MyAdapter extends BaseAdapter {@ Override public int getCount () {return titles. length ;}@ Override public Object getItem (int p) {return titles [p] ;}@ Override public long getItemId (int arg0) {return 0 ;} @ Override public View getView (int p, View contentView, ViewGroup arg2) {String title = titles [p]; View v = LayoutInflater. from (getApplicationContext ()). inflate (R. layout. item_list, null); TextView textView = (TextView) v. findViewById (R. id. text); textView. setText (title); return v ;}@override public void onConfigurationChanged (Configuration newConfig) {super. onConfigurationChanged (newConfig);} private class DrawerItemClickListener implements ListView. onItemClickListener {@ Override public void onItemClick (AdapterView
Parent, View view, int position, long id) {showFragmentById (position); mDrawerLayout. closeDrawer (drawerContent) ;}}// switch to the corresponding Fragment public void showFragmentById (int position) {Fragment f = null; switch (position) {case 1: f = new HomeFragment (); break; case 2: f = new CompanyFragment (); break; case 3: f = new NearFragment (); break; case 4: f = new SettingFragment (); break; default: break;} if (f = null) {return;} getsuppfragmentmanager (). beginTransaction (). replace (R. id. fragment_container, f ). commit ();} // callback function. Some things can be done when the private class DemoDrawerListener implements DrawerLayout is enabled or disabled. drawerListener {@ Override public void onDrawerOpened (View drawerView) {// call upon opening} @ Override public void onDrawerClosed (View drawerView) {// call when closing} @ Override public void onDrawerSlide (View drawerView, float slideOffset) {// during sliding} @ Override public void onDrawerStateChanged (int newState) {}}@ Override public boolean onCreateOptionsMenu (Menu menu) {return super. onCreateOptionsMenu (menu );}}
Here, only the HomeFragment code is written. The other content is the same.
public class HomeFragment extends Fragment { public HomeFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.home_fg, container,false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); TextView textView = (TextView) view.findViewById(R.id.text); textView.setText("Home"); }}
Home_fg.xml