如何解决xamarin形式:项目选择上具有重叠popupview的列表视图
我正在尝试创建一个列表视图,当点击列表中的特定项目时,该项目的角落将显示一个弹出视图,并且该视图将与列表的其他项目重叠。
让我们说该列表包含三个项目:活动,非活动,非活动,当我单击第一个项目时,它将显示一个弹出视图/框架,该视图将在列表的第一项下和列表中的其他项下重叠/渲染。
我不确定是否可以实现,该怎么办?尝试使用绝对布局,但无法获得列表中各项的正确值。
任何人都可以帮助/建议如何实现它吗?
我在点击项目时尝试了以下代码:
void TapGestureRecognizer_Tapped(System.Object sender,System.EventArgs e)
{
var label1 = new Label { Text = "View" };
var label2 = new Label { Text = "Edit" };
var label3 = new Label { Text = "Delete" };
var sl = new StackLayout { HorizontalOptions = Layoutoptions.End,VerticalOptions= Layoutoptions.FillAndExpand };
sl.Children.Add(label1);
sl.Children.Add(label2);
sl.Children.Add(label3);
var f = new Frame { HorizontalOptions = Layoutoptions.End,VerticalOptions = Layoutoptions.FillAndExpand };
f.Content = sl;
f.BackgroundColor = Color.AliceBlue;
f.HeightRequest = 150;
var bv = (sender as StackLayout).Children[1];
//AbsoluteLayout.SetLayoutBounds(f,new Rectangle(bv.Width - 20,bv.Y,130,500));
//AbsoluteLayout.SetLayoutFlags(f,AbsoluteLayoutFlags.All);
//(sender as StackLayout).Children.Add(f);
AbsoluteLayout.SetLayoutBounds(f,new Rectangle(0.5,0.5,110,25));
AbsoluteLayout.SetLayoutFlags(f,AbsoluteLayoutFlags.PositionProportional);
(sender as StackLayout).Children.Add(f);
}
它没有用。视图的高度大约只有几个像素。 [![在此处输入图片描述] [3]] [3]
解决方法
如果需要使用此方法来实现,则可以计算自定义ls
的位置。
例如,如果Xaml代码如下:
Frame
然后,您可以为此<ContentPage.Content>
<RelativeLayout x:Name="mylayout">
<ListView x:Name="MyListView"
HasUnevenRows="True"
ItemSelected="MyListView_ItemSelected"
ItemsSource="{Binding items}"
IsVisible="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
...
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</RelativeLayout>
</ContentPage.Content>
添加子视图:
mylayout
根据点击索引,我们可以计算出自定义框架的private void MyListView_ItemSelected(object sender,SelectedItemChangedEventArgs e)
{
//Navigation.PushAsync(new MainPage());
var label1 = new Label { Text = "View" };
var label2 = new Label { Text = "Edit" };
var label3 = new Label { Text = "Delete" };
var sl = new StackLayout { HorizontalOptions = LayoutOptions.End,VerticalOptions = LayoutOptions.FillAndExpand };
sl.Children.Add(label1);
sl.Children.Add(label2);
sl.Children.Add(label3);
var f = new Frame { HorizontalOptions = LayoutOptions.End,VerticalOptions = LayoutOptions.FillAndExpand };
f.Content = sl;
f.BackgroundColor = Color.AliceBlue;
f.HeightRequest = 150;
var Yposition = MyListView.Y + MyListView.RowHeight * TapIndex;
mylayout.Children.Add(f,() => new Rectangle(MyListView.Width-120,Yposition,110,110));
}
。
效果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。