1, 谷歌建议跟布局使用DrawerLayout, DrawerLayout是V4包里的控件;
2 给DrawerLayout中的控件设置一下两种属性,属性设置给谁,侧拉出来的就是谁;可以设置给图片, 按钮 ListView等等;
android:layout_gravity="left" android:choiceMode="singleChoice"
---------------------------------
布局
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout android:id="@+id/drawerLayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.wzq.drawerlayoutdemo2.MainActivity"> <FrameLayout android:id="@+id/frameLayout" android:layout_width="match_parent" android:layout_height="match_parent"/> <!-- 和drawerLayout配合需要配这两个属性 android:layout_gravity="left" android:choiceMode="singleChoice" --> <ListView android:id="@+id/lv" android:background="@color/colorPrimary" android:layout_width="300dp" android:layout_gravity="left" android:choiceMode="singleChoice" android:layout_height="match_parent"/> </android.support.v4.widget.DrawerLayout>------------------------------------代码
public class MainActivity extends AppCompatActivity { private DrawerLayout drawerLayout; private FrameLayout frameLayout; private ListView lv; private ArrayList<String> lists; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); setListener(); } private void initView() { drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); frameLayout = (FrameLayout) findViewById(R.id.frameLayout); lv = (ListView) findViewById(R.id.lv); } private void initData() { lists = new ArrayList<>(); for (int i = 0; i < 5; i++) { lists.add("DrawerLayout"+i); } ArrayAdapter<String> stringArrayAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, lists); lv.setAdapter(stringArrayAdapter); } private void setListener() { lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { MFragment mFragment = new MFragment(); Bundle bundle = new Bundle(); bundle.putString("name", lists.get(i)); mFragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.frameLayout,mFragment).commit(); //关闭drawer drawerLayout.closeDrawer(lv); } }); } }