繁体   English   中英

Xamarin.Forms TabbedPage中的下拉菜单

[英]Dropdown menu in Xamarin.Forms TabbedPage

我有这样的选项卡式设计, 标签页

该选项卡式页面已经设置好了,但是无论如何我还是想不起来要使用下拉菜单并在选项卡栏中添加一个额外的按钮(图像中的过滤器按钮)。 标签页的自定义渲染器可能可以工作,但作为最后的解决方法,我希望您帮忙。

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

将所有内容放入AbsoluteLayout中的TabbedPage.Content中,然后StackLayoutStackLayout (或您正在使用的其他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

在这里解释和解释Flags。 这很容易理解,但是如果遇到问题, 该视频对我有所帮助。

现在,您的DropDown就绪了。 想要显示时,只需设置可见性即可。

frame.IsVisisble = true;

提示1 :您甚至可以使用“动画”来对其进行动画处理。 例如, 代码的这种和平将做到这一点。

提示2 :如果将GestureRecognizers添加到StackLayout ,则用户可以在DropDown周围单击,它将隐藏。

XAML:

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

码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM