如何在 Android 中点击图标打开侧边栏?
How to open Side bar on icon click in Android?
我已经用 App toolbar
实现了 Hamburger
栏,它们都工作正常。以下是 toolbar
和 hamburger
栏的快照:
Hamburger bar
我可以通过滑动它来打开这个栏,但我也想通过单击可绘制图标(右上角图标)来打开它。我该怎么做?
主要活动
@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
代码的新手。任何帮助都将不胜感激。
使用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
使用工具栏组件应该很容易实现这一点,只需使用与此类似的代码:
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() 方法 - the推荐的是最右边的)。
使用Activity
的onOptionsItemSelected(MenuItem menuItem)
方法:
首先,在 class 字段中保留对 DrawerLayout
的引用:
DrawerLayout drawerLayout;
在 onCreate 的某个地方放这个:
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout)
并实现方法:
@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);
}
我已经用 App toolbar
实现了 Hamburger
栏,它们都工作正常。以下是 toolbar
和 hamburger
栏的快照:
Hamburger bar
我可以通过滑动它来打开这个栏,但我也想通过单击可绘制图标(右上角图标)来打开它。我该怎么做?
主要活动
@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
代码的新手。任何帮助都将不胜感激。
使用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
使用工具栏组件应该很容易实现这一点,只需使用与此类似的代码:
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() 方法 - the推荐的是最右边的)。
使用Activity
的onOptionsItemSelected(MenuItem menuItem)
方法:
首先,在 class 字段中保留对 DrawerLayout
的引用:
DrawerLayout drawerLayout;
在 onCreate 的某个地方放这个:
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout)
并实现方法:
@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);
}