我正在尝试实现一种可折叠的StackLayout。每次用户点击按钮,它都会展开或折叠StackLayout以显示/隐藏更多的细节。
我能够实现或多或少与以下代码,但它看起来不正确,效果不是很好,因为它立即增长,我把效果应用到其他元素。
我正在使用xamarin表单,对此您有什么建议吗?
XAML格式
<?xml version="1.0" encoding="utf-8" ?>
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Sample.MyStackLayout" >
<StackLayout x:Name="TopLayout">
<StackLayout Orientation="Horizontal">
<Label Text="some text" VerticalOptions="Center" HorizontalOptions="StartAndExpand" />
<Label Text="123" VerticalOptions="Center" HorizontalOptions="End" FontSize="Large" />
</StackLayout>
<BoxView Color="Black" HeightRequest="1" />
<StackLayout Orientation="Horizontal">
<Label Text="some text" VerticalOptions="Center" HorizontalOptions="StartAndExpand" />
<Label Text="123" VerticalOptions="Center" HorizontalOptions="End" FontSize="Large" />
</StackLayout>
<StackLayout Orientation="Horizontal">
<Label Text="some text" VerticalOptions="Center" HorizontalOptions="StartAndExpand" />
<Label Text="123" VerticalOptions="Center" HorizontalOptions="End" FontSize="Large" />
</StackLayout>
<Button x:Name="btn" Text="Button" Clicked="btnClicked" />
</StackLayout>
<StackLayout x:Name="MoreDetails" IsVisible="False">
<Label Text="some text 1"></Label>
<Label Text="some text 2"></Label>
<Label Text="some text 3"></Label>
<Label Text="some text 4"></Label>
<Label Text="some text 5"></Label>
<Label Text="some text 6"></Label>
<Label Text="some text 7"></Label>
<Label Text="some text 8"></Label>
</StackLayout>
</StackLayout>
代码
public AccountInfo()
{
InitializeComponent();
}
bool isExpanded = false;
protected async void btnClicked(object sender, EventArgs e)
{
if (isExpanded)
{
await MoreDetails.FadeTo(0);
MoreDetails.IsVisible = !isExpanded;
}
else
{
MoreDetails.IsVisible = !isExpanded;
await MoreDetails.FadeTo(1);
}
isExpanded = !isExpanded;
}
4条答案
按热度按时间anhgbhbe1#
您可以创建一个自定义控件来执行此操作。如果使用Xaml创建“ExpandableView”内容视图,如下所示:
并将.cs类连接起来,如下所示:
并在XAML中定义它,如下所示:
其中CustomControls是对ExpandableView所在的命名空间的引用。
您可以通过添加诸如展开时的动画、展开时突出显示“摘要区域”等内容来进一步展开此区域。
9rygscc12#
在APP类中,添加标志以启用实验功能:
然后,您可以这样使用它:
更多信息https://learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/expander
wvt8vs2t3#
将除MoreDetails之外的所有内容 Package 到另一个堆栈布局中,并将其命名为“TopLayout”
100 -这是你的位移值
作为奖励:
您可以像这样改变按钮,使ShowMore/ShowLess图像具有动画效果,
qmelpv7a4#
我们可以使用**Xamarin Community Toolkit的Expander**实现可折叠的视图,Xamarin Community Toolkit还提供了大量的视图、控件、行为、扩展、效果等。