[英]Dropdown menu in Xamarin.Forms TabbedPage
可以使用AbsoluteLayout
和一些高度计算来完成。 无需自定义渲染器。
将所有内容放入AbsoluteLayout
中的TabbedPage.Content
中,然后StackLayout
到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,但是您必须在其中写一个数字:
如果您不知道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.