Xamarin.Android:DrawerLayout.LayoutParams中的重力参数

我正在尝试使用Xamarin.Android以编程方式创建DrawerLayout ,但是当我尝试添加ListView时我遇到了一个问题,它应该可以从左侧拖动..

这是我的代码:

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

你可以注意到..我不知道作为gravity参数传递什么

DrawerLayout类中函数的定义是这样的:

 public LayoutParams(int width, int height, int gravity); 

所以我必须为gravity传递int ,但是如何?

我尝试过以下方法:

 myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240, height: DrawerLayout.LayoutParams.MatchParent, gravity: Gravity.LEFT); 

它给了我错误:

‘重力’不包含’左’的定义

还尝试过:

 myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240, height: DrawerLayout.LayoutParams.MatchParent, gravity: GravityFlags.Left); 

但是给了我一个错误:

无法从’Android.Views.GravityFlags’转换为’int’

希望您对解决方案有所了解……并提前感谢

你必须将标志强制转换为int

 new DrawerLayout.LayoutParams(240, DrawerLayout.LayoutParams.WrapContent, (int)(GravityFlags.Start | GravityFlags.Left)). 

由于DrawerLayout是支持包中的类,因此您可以使用GravityCompat:

  myListView.LayoutParameters = new DrawerLayout.LayoutParams(width: 240, height: DrawerLayout.LayoutParams.WrapContent, gravity: GravityCompat.Start);