2015-06-18 128 views
-2

我的应用程序有一个主屏幕,用户可以点击在主页片段,这将打开导航抽屉一个可点击的布局,但我在使用的openDrawer(查看视图)麻烦方法一旦布局被点击,让抽屉打开。的Android:开放抽屉式导航栏上的布局点击

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

我希望解决了你的问题。