Xamarin表单底部添加自定义工具栏

时间:2017-11-03 20:38:34

标签: xamarin xamarin.forms

我有一个使用Xamarin Forms创建的页面。我想在屏幕底部添加一个工具栏,就像叠加一样,但不会改变屏幕的实际布局。它应该覆盖在所有内容之上并始终位于底部。

只有在有特定事件时才会显示。因此它将动态添加。

任何想法 - 或者如果你能指出我正确的方向。我不想使用任何nuget包。

2 个答案:

答案 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上执行此操作,代码可能需要进行一些更正。

从这个示例中,您可以对页面下方的工具栏进行动画制作。只需更改DisplayToolbarRemoveToolvar方法。

OB的。 C#上的方法名称是PascalCased(每个单词都是大写的)所以 d isplayToolbar是 D isplayToolbar。

希望它有所帮助! :)