c# - actionbardrawertoggle - navigation drawer xamarin forms
Xamarin.Android: parĂ¡metro de gravedad en DrawerLayout.LayoutParams (2)
DrawerLayout
crear un DrawerLayout
programáticamente usando Xamarin.Android , pero me enfrenté a un problema cuando intenté agregar ListView
que debería ser extraíble desde la izquierda.
Aquí está mi código:
DrawerLayout myDrawerLayout = new DrawerLayout(this);
myDrawerLayout.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);
SetContentView(myDrawerLayout);
FrameLayout myFrameLayout = new FrameLayout(this);
myFrameLayout.LayoutParameters = new DrawerLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);
myFrameLayout.SetBackgroundColor(Android.Graphics.Color.Gray);
myDrawerLayout.AddView(myFrameLayout);
ListView myListView = new ListView(this);
myListView.SetBackgroundColor(Android.Graphics.Color.Green);
myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240,
height: DrawerLayout.LayoutParams.MatchParent,
gravity: ????????
);
myDrawerLayout.AddView(myListView);
Como pueden notar ... no supe qué pasar como parámetro de gravity
La definición de la función en la clase DrawerLayout
es así:
public LayoutParams(int width, int height, int gravity);
Entonces, tengo que pasar int
por la gravity
, pero ¿cómo?
He intentado lo siguiente:
myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240, height: DrawerLayout.LayoutParams.MatchParent, gravity: Gravity.LEFT);
Me da error:
''Gravedad'' no contiene una definición para ''IZQUIERDA''
También probado:
myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240, height: DrawerLayout.LayoutParams.MatchParent, gravity: GravityFlags.Left);
pero me da un error:
no se puede convertir de ''Android.Views.GravityFlags'' a ''int''
Espero que tengas una idea sobre la solución ... y gracias de antemano
Como DrawerLayout es una clase de los paquetes de soporte, puede usar GravityCompat:
myListView.LayoutParameters = new DrawerLayout.LayoutParams(width: 240,
height: DrawerLayout.LayoutParams.WrapContent,
gravity: GravityCompat.Start);
Tienes que lanzar la bandera a int como
new DrawerLayout.LayoutParams(240, DrawerLayout.LayoutParams.WrapContent, (int)(GravityFlags.Start | GravityFlags.Left)).