您的位置:首页 > 移动开发 > Android开发

Android官方侧滑菜单

2016-07-11 16:00 716 查看

布局:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="如果DrawerLayout中除NavigationView外没有其它布局,则点击主界面的任何部分都不会收回侧边栏"
android:textSize="16sp" />

<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header"
app:menu="@menu/drawer_view" />

</android.support.v4.widget.DrawerLayout>

策划菜单的头部

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="192dp"
android:background="?attr/colorPrimaryDark"
android:gravity="bottom"
android:orientation="vertical"
android:padding="16dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark">

<android.support.v7.widget.AppCompatImageView
android:id="@+id/head_iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:src="@drawable/mingyi" />

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="MingYi"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

</LinearLayout>

侧滑菜单的菜单选项

<menu xmlns:android="http://schemas.android.com/apk/res/android">

<group android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:icon="@drawable/ic_dashboard"
android:title="主页" />
<item
android:id="@+id/nav_messages"
android:icon="@drawable/ic_event"
android:title="日历" />
<item
android:id="@+id/nav_friends"
android:icon="@drawable/ic_headset"
android:title="音乐" />
<item
android:id="@+id/nav_discussion"
android:icon="@drawable/ic_forum"
android:title="消息" />
</group>

<item android:title="Sub items">
<menu>
<item
android:icon="@drawable/ic_dashboard"
android:title="子条目1" />
<item
android:icon="@drawable/ic_forum"
android:title="子条目2" />
</menu>
</item>

</menu>

Activity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private DrawerLayout mDrawerLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//        setSupportActionBar(toolbar);
/**
* 设置左上角的返回图标并显示
*/
final ActionBar ab = getSupportActionBar();
ab.setHomeAsUpIndicator(R.drawable.ic_menu);
ab.setDisplayHomeAsUpEnabled(true);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
/**
* 设置navigationView
* 被点击的item会高亮显示在抽屉菜单中,让用户知道当前是哪个菜单被选中
*/
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
//        navigationView.addHeaderView();可以在代码中添加侧边栏的头部
//        navigationView.inflateMenu();可以在代码中添加侧边栏的菜单
navigationView.getHeaderView(0).findViewById(R.id.head_iv).setOnClickListener(this);
if (navigationView != null) {
setupDrawerContent(navigationView);
}
}

private void setupDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
mDrawerLayout.closeDrawers();
return true;
}
});
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);//实现点击左上角的返回按钮可以打开或隐藏侧边栏
return true;
}
return super.onOptionsItemSelected(item);
}

@Override
public void onClick(View view) {
if (view.getId() == R.id.head_iv) {
Toast.makeText(this, "点击头部", Toast.LENGTH_SHORT).show();
}
}
}
github开源项目:https://github.com/chrisbanes/cheesesquare
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  控件