将(打开/closures)button添加到(打开/closures)导航抽屉的活动

我目前正在学习从android网站导航抽屉,我使用他们的示例http://developer.android.com/training/implementing-navigation/nav-drawer.html

我想要的是在MainActivity添加一个可以打开NavigationDrawerbutton。 我需要以编程方式执行,而不是使用XML。 我怎样才能做到这一点?

Solutions Collecting From Web of "将(打开/closures)button添加到(打开/closures)导航抽屉的活动"

MainActivity创build一个包含drawerLayout的方法。

 public void open() { mDrawerLayout.openDrawer(Gravity.LEFT); } 

并从你的片段在oncreateView()方法当你想要新的button编程方式在您的根膨胀的布局中添加button。 你的片段有button
波纹pipe我修改片段试试

  public static class PlanetFragment extends Fragment { public static final String ARG_PLANET_NUMBER = "planet_number"; public PlanetFragment() { // Empty constructor required for fragment subclasses } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_planet, container, false); int i = getArguments().getInt(ARG_PLANET_NUMBER); String planet = getResources().getStringArray(R.array.planets_array)[i]; int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()), "drawable", getActivity().getPackageName()); ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId); getActivity().setTitle(planet); RelativeLayout root=(RelativeLayout)rootView.findViewById(R.id.root); Button button=new Button(getActivity()); LayoutParams params=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); button.setLayoutParams(params); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); params.addRule(RelativeLayout.ALIGN_PARENT_TOP); button.setText("openDrawer"); root.addView(button); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ((MainActivity)getActivity()).open(); } }); return rootView; } } } 

你可以在你的片段中试试这个代码

onCreate(Bundle)方法中创buildbutton:

 Button button = new Button(this); 

find你的DrawerLayout

 mDrawerLayout = (DrawerLayout) findViewById(R.id.my_drawer_layout_id); 

在这个button上设置一个OnClickListener

 button.setOnClickListener(new OnClickListener() { public void onClick(View view) { mDrawerLayout.openDrawer(Gravity.LEFT); } ) 

这会给你一个空的抽屉。 如果您希望将放置在抽屉内的Viewreplace为:

 mDrawerLayout.openDrawer(Gravity.LEFT); 

有:

 mDrawerLayout.openDrawer(myCustomView); 

如果您希望该button切换抽屉(closures抽屉,如果其closures),请使用以下OnClickListener

 button.setOnClickListener(new OnClickListener() { public void onClick(View view) { if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) { mDrawerLayout.closeDrawer(Gravity.LEFT); } else { mDrawerLayout.openDrawer(Gravity.LEFT); } } ) 

如果您正在使用自定义视图,请使用此OnClickListener

 button.setOnClickListener(new OnClickListener() { public void onClick(View view) { if (mDrawerLayout.isDrawerOpen(myCustomView)) { mDrawerLayout.closeDrawer(myCustomView); } else { mDrawerLayout.openDrawer(myCustomView); } } )