如何在Android上的图标点击中打开侧栏?

时间:2015-09-08 14:51:31

标签: android android-layout android-drawable hamburger-menu

我已经使用Hamburger实施了App toolbar栏,并且两者都运行良好。以下是toolbarhamburger栏的快照:

enter image description here

Hamburger bar

enter image description here

我可以通过滑动来打开此栏,但我也想通过点击可绘制图标(右上角图标)使其打开。我怎么能这样做?

MainActivity

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

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    drawerFragment = (FragmentDrawer)
            getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
    drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar);
    drawerFragment.setDrawerListener(this);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    return super.onOptionsItemSelected(item);
}

我不这么认为我需要对layout文件进行一些更改。我需要在MainActivity文件中添加什么才能使其成为可能?

我是Android代码的新手。任何帮助都会很明显。

3 个答案:

答案 0 :(得分:0)

使用openDrawer()方法。

private DrawerLayout mDrawerLayout;
...
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
...
mDrawerLayout.openDrawer(Gravity.END); // or whatever gravity the of the drawer you want to open

答案 1 :(得分:0)

通过使用类似的代码,使用工具栏组件应该很容易实现:

    Toolbar toolbar = (Toolbar) findViewById(R.id.home_toolbar);
    toolbar.inflateMenu(R.menu.menu_home);
    toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            if (item.getItemId() == R.id.action_settings) {
                mDrawerLayout.openDrawer(Gravity.RIGHT); // where mDrawerLayout is your android.support.v4.widget.DrawerLayout in your activity's xml layout.
            }
            return false;
        }
    });

编辑:

此处的关键组件是 menu_home.xml 文件,该文件将转到您的res / menu文件夹。你可以在那里添加你想要的菜单项,自定义它的图标甚至更多,添加你想要在工具栏右侧的多个项目(显然可以在任何一个上处理openDrawer()方法你需要的菜单项 - 推荐的是最右边的菜单项。

答案 2 :(得分:0)

使用onOptionsItemSelected(MenuItem menuItem)' DrawerLayout方法:

首先,在类字段中保留对DrawerLayout drawerLayout; 的引用:

drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout)

在onCreate的某个地方放了这个:

@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
    // if you want the default back/home hamburger menu item just put android.R.id.home instead
    if (menuItem.getItemId() == R.drawable.icon_navigation) { 
        drawerLayout.openDrawer(GravityCompat.END);
    }
    return super.onOptionsItemSelected(menuItem);
}

并实施方法:

:empty