Как открыть боковую панель при нажатии на иконку в Android?
Я реализовал Hamburger
бар с App toolbar
и оба они работают нормально. Ниже приведен снимок 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
код. Любая помощь будет ощутимой.
3 ответа
С помощью компонента Toolbar должно быть довольно легко добиться этого с помощью кода, аналогичного следующему:
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() для любого элемента меню, который вам нужен - рекомендованный - самый правый).
Использовать 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
Использование Activity
"s onOptionsItemSelected(MenuItem menuItem)
метод:
Прежде всего, сохраните ссылку на ваш 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);
}