我正在通过以下方法在 AbsoluteLayout 中添加视图元素,该方法在按钮事件中称为
private async void SlideBottomMenu(bool state, bool sideLeftOrRight)
{
if (state)
{
FoldTo = sideLeftOrRight;
absolutelayout.Children.Add(SideMenu, new Rectangle(sideLeftOrRight? -1 : 1, 0, 1, 1), AbsoluteLayoutFlags.All);
await SideMenu.TranslateTo(0, 0, 200, Easing.Linear); //show menu from left or right as sideLeftOrRight
}
else
{
if (sideLeftOrRight)
{
await SideMenu.TranslateTo(-(App.ScreenWidth), 0, 200, Easing.Linear); //translate to left to hide from screen
absolutelayout.Children.Remove(SideMenu);
}
else
{
await SideMenu.TranslateTo((App.ScreenWidth), 0, 200, Easing.Linear); //translate to right to hide from screen
absolutelayout.Children.Remove(SideMenu);
}
};
和 SideMenu (StackLayout)已在页面构造函数中初始化,并且此 SlideBottomMenu(bool,bool)方法在以下两个按钮事件中调用
private void Left_Clicked(object sender, EventArgs e)
{
SlideBottomMenu(true,true);
}
private void Right_Clicked(object sender, EventArgs e)
{
SlideBottomMenu(true,false);
}
然后关闭此SlideBottomMenu称为方法:
private void B1_Clicked(object sender, EventArgs e)
{
SlideBottomMenu(false,FoldTo);
}
当我单击向左或向右按钮都可以正常工作时,但是从右向左或从左向右切换时, SlideBottomMenu 从错误的一侧出现,从左向右显示,从右向右显示,仅用于第一次单击,二次工作正确,
我认为原因是 sideMenu 不能从绝对布局中完全删除或删除,但是属性不会重置为默认值。
如果有人了解情况,请帮助我。