studio samsung programacion móviles gestos español desarrollo desarrollar curso cualquier con aprende aplicaciones android button android-activity drawer

samsung - manual programacion android español pdf



Agregar(abrir/cerrar) botón a la actividad para(abrir/cerrar) el cajón de navegación (2)

Actualmente estoy aprendiendo sobre el cajón de navegación del sitio de Android, y estoy usando su ejemplo http://developer.android.com/training/implementing-navigation/nav-drawer.html

Lo que quiero es agregar un botón en MainActivity que pueda abrir NavigationDrawer . Necesito hacerlo programáticamente, no en XML. ¿Cómo puedo hacer eso?


Crea tu botón en el onCreate(Bundle) :

Button button = new Button(this);

Encuentra tu DrawerLayout :

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

Establecer un OnClickListener en este botón:

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

Esto te dará un cajón vacío. Si tiene una View que desea colocar dentro del cajón, reemplace:

mDrawerLayout.openDrawer(Gravity.LEFT);

con:

mDrawerLayout.openDrawer(myCustomView);

Si desea que el botón alterne el cajón (cierre el cajón si está abierto o, ábralo si está cerrado) use el siguiente OnClickListener :

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

Si está utilizando una vista personalizada, use este OnClickListener :

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


Cree un método en MainActivity que contenga su drawerLayout.

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


y de su fragmento En el método oncreateView () Como quiera, el nuevo botón Agregue un botón en el diseño inflado de su raíz mediante programación. Tu fragmento tiene botón
abajo modifiqué el intento de fragmento

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; } } }


Puedes probar este código en tu fragmento.