【问题标题】:Dropdown menu in Xamarin.Forms TabbedPageXamarin.Forms TabbedPage 中的下拉菜单
【发布时间】:2019-03-23 05:22:54
【问题描述】:

我有一个这样的标签页设计,

标签页已经设置好了,但无论如何我都想不出要实现下拉菜单并向标签栏添加一个额外的按钮(图像中的过滤器按钮)。标签页的自定义渲染器可能会起作用,但我希望作为最后的手段,请帮助我。

【问题讨论】:

    标签: c# xamarin.forms renderer


    【解决方案1】:

    这可以通过AbsoluteLayout 和一些高度计算来完成。无需自定义渲染器。

    将您的TabbedPage.Content 中的所有内容放入AbsoluteLayout,然后放入StackLayout(或您正在使用的其他Layout)。然后添加一个Frame(我用的是Frame,但是你可以用其他的View)。

    <AbsoluteLayout x:Name="absoluteLayout">
         <StackLayout AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1">
             //other layouts and elements
         </StackLayout>
         <Frame AbsoluteLayout.LayoutFlags="WidthProportional" AbsoluteLayout.LayoutBounds="0,0,1,A" IsVisible="False">
             //your checkboxes and labels
         </Frame>
    </AbsoluteLayout>
    

    在Frame属性AbsoluteLayout.LayoutBounds="0,0,1,A"我写了A,但是你必须在那里写一个数字:

    • A = 下拉菜单的高度

    如果在初始化 XAML 时不知道高度,也可以在代码中设置:

    AbsoluteLayout.SetLayoutBounds(frame, new Rectangle(0, 0, 1, height)); // X,Y,Width,Height
    

    解释和更多关于标志的解释here。很容易理解,但是如果你有问题,this video 帮助了我。

    现在您的 DropDown 已准备就绪。当您希望它显示时,只需设置可见性即可。

    frame.IsVisisble = true;
    

    提示 1:您甚至可以使用 Animations 为它设置上下动画。例如,this peace of code 会这样做。

    提示2:如果您在StackLayout 中添加GestureRecognizers,用户可以在下拉菜单周围单击,它会隐藏。

    XAML:

    <StackLayout.GestureRecognizers>
         <TapGestureRecognizer Tapped="StackLayout_Tapped"/>
    </StackLayout.GestureRecognizers>
    

    代码:

    if (frame.IsVisisble)
    {
        frame.IsVisisble = false;
    }
    

    【讨论】:

    • 非常感谢 Martinedo,我将从您的示例开始实施,看看我会在哪里结束。但是,在下拉菜单本身之前我有一个问题,我没有指出这一点。标签栏中的过滤器按钮(来自图像),除了添加页面并禁用该页面之外,我找不到在标签栏中放置额外按钮的方法。
    • 好吧,如果没有自定义渲染器,这是不可能的。 Android可以做到,但我不认为iOS可以。 stackoverflow.com/a/44511454/3495516 。我建议您找到另一种放置过滤器按钮的方法,
    • 好的,我决定把它作为一个工具栏项。一旦我实施它就会回到这里。如果您的代码运行良好,我会接受答案。
    • 嗨,马丁内多。经过深思熟虑,我决定为此使用渲染器,以便我有更多的控制权。我将创建一个自定义视图并在 Android 和 IOS 上找到原生解决方案来实现我的目标。然后我会发布答案。
    • 您能发布您的解决方案吗?我必须处理类似的问题。用 AbsoluteLayout 实现了,但是用自定义渲染器看也不错
    猜你喜欢
    • 2021-06-11
    • 2012-07-05
    • 1970-01-01
    • 2020-08-03
    • 2015-03-15
    • 2018-01-27
    • 2021-04-11
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多