hamburger actionbardrawertoggle c# android xamarin.android drawerlayout

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)).