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.