一 使用actionbar的实现
代码编写
public class Main2Activity extends AppCompatActivity implements AdapterView.OnItemClickListener {
private DrawerLayout mDrawerLayout;
private ListView mListView;
private ActionBarDrawerToggle mDrawerToggle;
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2main);
/*
使用带actionbar的主题
*/
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);//添加drawerlayout布局
//显示并启用操作栏Home键
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);//显示操作栏的Home键
getSupportActionBar().setHomeButtonEnabled(true);//启用Home键
}
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R
.string.close);
mDrawerLayout.addDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();//同步更新操作栏Home键的图标
mListView = (ListView) findViewById(R.id.listView);
mListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
new String[]{"菜单一", "菜单二", "菜单三"}));
mListView.setOnItemClickListener(this);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//mDrawerToggle菜单事件
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/*
点击侧拉菜单项,关闭侧拉菜单,一下两种方式都可以
*/
// mDrawerLayout.closeDrawer(GravityCompat.START);
mDrawerLayout.closeDrawer(mListView);
}
}
布局文件
<?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/drawerlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ListView
android:id="@+id/listView"
android:layout_width="160dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/colorAccent"
android:choiceMode="singleChoice"
android:divider="@null"/>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
二 使用Toolbar的实现
代码编写
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
private DrawerLayout mDrawerLayout;
private ListView mListView;
private ActionBarDrawerToggle mDrawerToggle;
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
使用没有actionbar的主题
*/
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);//添加drawerlayout布局
mToolbar = (Toolbar) findViewById(R.id.toolbar);//添加toolbar
setSupportActionBar(mToolbar);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.open, R
.string.close);
mDrawerToggle.syncState();
mDrawerLayout.addDrawerListener(mDrawerToggle);
mListView = (ListView) findViewById(R.id.listView);
mListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
new String[]{"菜单一", "菜单二", "菜单三"}));
mListView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/*
点击侧拉菜单项,关闭侧拉菜单,一下两种方式都可以
*/
// mDrawerLayout.closeDrawer(GravityCompat.START);
mDrawerLayout.closeDrawer(mListView);
}
}
布局
<?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:orientation="vertical">
<span style="white-space:pre"> </span><pre name="code" class="html"><android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
<android.support.v4.widget.DrawerLayout android:id="@+id/drawerlayout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/fragmentContainer" android:layout_width="match_parent" android:layout_height="match_parent"/> <ListView android:id="@+id/listView" android:layout_width="160dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@color/colorAccent" android:choiceMode="singleChoice" android:divider="@null"/> </android.support.v4.widget.DrawerLayout></LinearLayout>