C# Android:DrawerLayout.LayoutParams中的重力参数

C# Android:DrawerLayout.LayoutParams中的重力参数,c#,android,xamarin.android,drawerlayout,C#,Android,Xamarin.android,Drawerlayout,我试图使用Xamarin.Android以编程方式创建一个抽屉布局,但在尝试添加应从左侧拖动的ListView时遇到了一个问题 这是我的密码: DrawerLayout myDrawerLayout = new DrawerLayout(this); myDrawerLayout.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.M

我试图使用Xamarin.Android以编程方式创建一个抽屉布局,但在尝试添加应从左侧拖动的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);
正如你所注意到的。。我不知道要传递什么作为重力参数

DroperLayout类中函数的定义如下:

public LayoutParams(int width, int height, int 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-like

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

你必须把旗子打成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);

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

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

一直给我错误什么错误?一直给我错误什么错误?谢谢,它工作得很好。。但是|符号在这里的意思是什么?|是位or。这就是设置多个标志的方式。它只需要是MatchParent而不是WrapContent。。这是我的代码中的一个错误。它工作得很好。。但是|符号在这里的意思是什么?|是位or。这就是设置多个标志的方式。它只需要是MatchParent而不是WrapContent。。这是我的代码中的一个错误,alsoGravityCompat只提供了开始。。没有右、左或中。。我猜斯文的答案更有用一点。。感谢您的努力开始与左侧基本相同。GravityCompat只提供开始。。没有右、左或中。。我猜斯文的答案更有用一点。。谢谢你的努力,开始和左边基本一样。