我有一个使用Xamarin Forms创建的页面。我想在屏幕底部添加一个工具栏,就像叠加一样,但不会改变屏幕的实际布局。它应该覆盖在所有内容之上并始终位于底部。
只有在有特定事件时才会显示。因此它将动态添加。
任何想法 - 或者如果你能指出我正确的方向。我不想使用任何nuget包。
答案 0 :(得分:1)
您是否尝试过使用AbsoluteLayout / Grid?
const products = state.products.filter( product => ! namesToRemove.includes( product.name ) )
根据您的活动显示/隐藏控件。
答案 1 :(得分:0)
如果您可以显示displayToolbar
的代码,那么编写适合您需求的代码会更容易,但即使没有代码也应该很容易:)
您可以使用RelativeLayout,AbsoluteLayout或Grid执行此操作,但我建议使用Grid,因为它比RelativeLayout轻得多,并且功能比AbsoluteLayout多得多。
因此,将要使用的每个页面的根displayToolbar
设为一行一列的网格。将页面的实际内容作为子视图添加到该网格。
现在,您的代码将变得更容易。如果要显示工具栏,请将工具栏视图添加为根网格的子项,并将VerticalOptions设置为LayoutOptions.End
。
就是这样。工具栏将添加到页面的每个视图前面,如果要动态删除工具栏,请删除根网格的最后一个子项。
布局将是这样的:
Grid root;
internal SomePageConstructor()
{
root = new Grid
{
ColumnDefinitions =
{
new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }
},
RowDefinitions =
{
new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }
}
};
root.Children.Add(actualPageContent, 0, 0);
Content = root;
}
void DisplayToolbar()
{
var toolbar = new StackLayout { VerticalOptions = LayoutOptions.End };
root.Children.Add(toolbar, 0, 0);
}
void RemoveToolbar()
{
root.Children.Remove(root.Children[1]);
}
注意:我直接在StackOverflow上执行此操作,代码可能需要进行一些更正。
从这个示例中,您可以对页面下方的工具栏进行动画制作。只需更改DisplayToolbar
和RemoveToolvar
方法。
OB的。 C#上的方法名称是PascalCased(每个单词都是大写的)所以 d isplayToolbar是 D isplayToolbar。
希望它有所帮助! :)