Reputation: 37
Hi I try to use this tutorial to make a NavigationDrawer in android but I wan't to change the way that Drawer is open. the tutorial is this: http://www.androidhive.info/2015/04/android-getting-started-with-material-design/
in this tutorial the Drawer open with default home button in toolbar I want to open it with menu item.
this is my main code:
public class First_page extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {
Button go_layout;
private Toolbar toolbar;
private FragmentDrawer drawerFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first_page);
toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setLogo(R.drawable.page_logo_2);
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);
go_layout = (Button)findViewById(R.id.go_to_page);
go_layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(First_page.this, Full_page.class);
startActivity(intent);
}
});
}
@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();
//noinspection SimplifiableIfStatement
if (id == R.id.right_btn) {
Toast.makeText(First_page.this, "Right_btn clicked", Toast.LENGTH_LONG).show();
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);
}
return super.onOptionsItemSelected(item);
}
@Override
public void onDrawerItemSelected(View view, int position) {
}
}
Upvotes: 1
Views: 158
Reputation: 1106
My method is a onClick called "btnClickSideBar" . You can call it whatever you want. When you give a click it will check if the Drawer is Open or Close. If it is Open our method it will Close and If it is Close the Drawer will Open.
public void btnClickSideBar(View view) {
if (drawerLayout.isDrawerOpen(drawerContainer)) {
drawerLayout.closeDrawers();
} else {
drawerLayout.openDrawer(drawerContainer);
}
}
Upvotes: 1
Reputation: 3568
Here is how I handle opening and closing of the NavigationDrawer. Just call handleNavDrawer() where ever you want to open or close it.
Handling open and close of the drawer
public void handleNavDrawer() {
if (mNavigationDrawer.isDrawerOpen(GravityCompat.START)) {
mNavigationDrawer.closeDrawer(GravityCompat.START);
} else {
mNavigationDrawer.openDrawer(GravityCompat.START);
}
}
Working Example
public class MainActivity extends AppCompatActivity {
private DrawerLayout mNavigationDrawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tracker);
mNavigationDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_search) {
handleNavDrawer();
return true;
}
return super.onOptionsItemSelected(item);
}
public void handleNavDrawer() {
if (mNavigationDrawer.isDrawerOpen(GravityCompat.START)) {
mNavigationDrawer.closeDrawer(GravityCompat.START);
} else {
mNavigationDrawer.openDrawer(GravityCompat.START);
}
}
}
Update with your example
public class First_page extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {
Button go_layout;
private Toolbar toolbar;
private FragmentDrawer drawerFragment;
private DrawerLayout mNavigationDrawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first_page);
toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setLogo(R.drawable.page_logo_2);
go_layout = (Button)findViewById(R.id.go_to_page);
go_layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(First_page.this, Full_page.class);
startActivity(intent);
}
});
mNavigationDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerFragment = (FragmentDrawer) getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
drawerFragment.setUp(R.id.fragment_navigation_drawer, mNavigationDrawer, toolbar);
drawerFragment.setDrawerListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.right_btn) {
Toast.makeText(First_page.this, "Right_btn clicked", Toast.LENGTH_LONG).show();
handleNavDrawer();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onDrawerItemSelected(View view, int position) {
// Close the Nav Drawer
// handleNavDrawer();
}
public void handleNavDrawer() {
if (mNavigationDrawer.isDrawerOpen(GravityCompat.START)) {
mNavigationDrawer.closeDrawer(GravityCompat.START);
} else {
mNavigationDrawer.openDrawer(GravityCompat.START);
}
}
}
Upvotes: 1