Xamarin.Android : DrawerLayout.LayoutParams 中的重力参数
Xamarin.Android : Gravity parameter in 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
class中函数的定义是这样的:
public LayoutParams(int width, int height, int gravity);
所以我必须为 gravity
传递 int
,但是如何呢??
我尝试了以下方法:
myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240, height: DrawerLayout.LayoutParams.MatchParent, gravity: Gravity.LEFT);
它给我错误:
'Gravity' does not contain a definition for 'LEFT'
也试过:
myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240, height: DrawerLayout.LayoutParams.MatchParent, gravity: GravityFlags.Left);
但给我一个错误:
cannot convert from 'Android.Views.GravityFlags' to 'int'
希望您对解决方案有所了解..在此先感谢
你必须像
一样将标志转换为 int
new DrawerLayout.LayoutParams(240, DrawerLayout.LayoutParams.WrapContent, (int)(GravityFlags.Start | GravityFlags.Left)).
由于 DrawerLayout 是来自支持包的 Class,您可以使用 GravityCompat:
myListView.LayoutParameters = new DrawerLayout.LayoutParams(width: 240,
height: DrawerLayout.LayoutParams.WrapContent,
gravity: GravityCompat.Start);
我正在尝试使用 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
class中函数的定义是这样的:
public LayoutParams(int width, int height, int gravity);
所以我必须为 gravity
传递 int
,但是如何呢??
我尝试了以下方法:
myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240, height: DrawerLayout.LayoutParams.MatchParent, gravity: Gravity.LEFT);
它给我错误:
'Gravity' does not contain a definition for 'LEFT'
也试过:
myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240, height: DrawerLayout.LayoutParams.MatchParent, gravity: GravityFlags.Left);
但给我一个错误:
cannot convert from 'Android.Views.GravityFlags' to 'int'
希望您对解决方案有所了解..在此先感谢
你必须像
一样将标志转换为 intnew DrawerLayout.LayoutParams(240, DrawerLayout.LayoutParams.WrapContent, (int)(GravityFlags.Start | GravityFlags.Left)).
由于 DrawerLayout 是来自支持包的 Class,您可以使用 GravityCompat:
myListView.LayoutParameters = new DrawerLayout.LayoutParams(width: 240,
height: DrawerLayout.LayoutParams.WrapContent,
gravity: GravityCompat.Start);