我的应用程序有一个主屏幕,用户可以点击主页片段上的可点击布局,这将打开导航抽屉,但是我无法使用openDrawer(查看视图)方法来获取抽屉单击布局后打开。
HomeFragment.java(可点击布局所在的位置)
public void onClick(View v) {
Toast toast = Toast.makeText(context, "Handle Drawer Opening Via This Event", Toast.LENGTH_LONG);
toast.show();
FragmentDrawer fragDrawer = new FragmentDrawer();
fragDrawer.openNavDrawer();
}
FragmentDrawer.java:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflating view layout
View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList);
adapter = new NavigationDrawerAdapter(getActivity(), getData());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
drawerListener.onDrawerItemSelected(view, position);
mDrawerLayout.closeDrawer(containerView);
}
@Override
public void onLongClick(View view, int position) {
}
}));
return layout;
}
//This method is called from the click event in HomeFragment.java
public void openNavDrawer(){
mDrawerLayout.openDrawer(Gravity.START);
}
答案 0 :(得分:0)
我的mDrawerLayout在这里实例化了:
mDrawerLayout =(DrawerLayout)findViewById (R.id.my_drawer_layout);
我的幻灯片状态:
mSlideState = FALSE;
如果您需要知道幻灯片菜单状态(关闭,打开)。使用此代码:
mDrawerLayout.setDrawerListener
(new ActionBarDrawerToggle
(this, mDrawerLayout, R.drawable.ic_menu_slide, 0, 0){
@Override
public void onDrawerClosed
(View drawerView) {
super.onDrawerClosed
(drawerView);
mSlideState=false;//is Closed
}
@Override
public void onDrawerOpened
(View drawerView) {
super.onDrawerOpened(drawerView); mSlideState=true;//is Opened }});
最后。您可以像这样使用点击事件:
public void clickEventSlide(){
if(mSlideState){
mDrawerLayout.closeDrawer(Gravity.END);
}else{ mDrawerLayout.openDrawer(Gravity.END); }
}
在我的情况下,我的幻灯片菜单位于右侧(Gravity.END),但如果您需要在左侧,请尝试使用Gravity.START
我希望解决你的问题。