Android:在布局上打开导航抽屉单击

时间:2015-06-18 04:02:29

标签: java android

我的应用程序有一个主屏幕,用户可以点击主页片段上的可点击布局,这将打开导航抽屉,但是我无法使用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);

}

1 个答案:

答案 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

我希望解决你的问题。