Android 上 ListView 中所选项目的上下文菜单位置
Context menu position of selected item in a ListView on Android
我在 Android 平台上有一个 ListView,带有 Xamarin Forms。单击列表中的项目时,每个项目的上下文菜单都会出现一些选项;我正在使用模式 MVVM。球赛到此为止。
我想更改布局或菜单的显示方式。我希望上下文菜单在 UWP 中显示相同,作为所选项目上的弹出窗口,但在 Android 中,这是我正在使用的平台。
作为 shown here,是否只能在 UWP 或 Android 上使用自定义渲染或类似的东西才能拥有此视图?
如果您希望上下文菜单在所选项目上显示为弹出窗口,Xamarin.Forms
DisplayActionSheet
方法可让您将此控件包含在跨平台应用程序中,从而在 Android 和带有弹出窗口的 UWP。
我做一个简单的例子供大家参考
型号:
public class Person
{
public string Name { get; set; }
public string FirstName { get; set; }
public int Age { get; set; }
}
视图模型:
public class PersonViewModel
{
public ObservableCollection<Person> peoples { get; set; }
public PersonViewModel()
{
peoples = new ObservableCollection<Person>()
{
new Person(){ Name = "A", FirstName ="a", Age =10 },
new Person(){ Name = "B", FirstName ="b", Age =11 },
new Person(){ Name = "C", FirstName ="c", Age =12 },
new Person(){ Name = "D", FirstName ="d", Age =13 },
new Person(){ Name = "E", FirstName ="e", Age =14 },
new Person(){ Name = "F", FirstName ="f", Age =15 },
};
}
}
Xaml:
<ListView ItemsSource="{Binding peoples}" ItemSelected="ListView_ItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding Name}"></Label>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
后面的代码:
public Page5()
{
InitializeComponent();
this.BindingContext = new PersonViewModel();
}
private async void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var selectedItem = e.SelectedItem as Person;
await DisplayActionSheet("Details Page:", "Cancel", null, selectedItem.FirstName, selectedItem.Age.ToString());
}
我在 Android 平台上有一个 ListView,带有 Xamarin Forms。单击列表中的项目时,每个项目的上下文菜单都会出现一些选项;我正在使用模式 MVVM。球赛到此为止。
我想更改布局或菜单的显示方式。我希望上下文菜单在 UWP 中显示相同,作为所选项目上的弹出窗口,但在 Android 中,这是我正在使用的平台。 作为 shown here,是否只能在 UWP 或 Android 上使用自定义渲染或类似的东西才能拥有此视图?
如果您希望上下文菜单在所选项目上显示为弹出窗口,Xamarin.Forms
DisplayActionSheet
方法可让您将此控件包含在跨平台应用程序中,从而在 Android 和带有弹出窗口的 UWP。
我做一个简单的例子供大家参考
型号:
public class Person
{
public string Name { get; set; }
public string FirstName { get; set; }
public int Age { get; set; }
}
视图模型:
public class PersonViewModel
{
public ObservableCollection<Person> peoples { get; set; }
public PersonViewModel()
{
peoples = new ObservableCollection<Person>()
{
new Person(){ Name = "A", FirstName ="a", Age =10 },
new Person(){ Name = "B", FirstName ="b", Age =11 },
new Person(){ Name = "C", FirstName ="c", Age =12 },
new Person(){ Name = "D", FirstName ="d", Age =13 },
new Person(){ Name = "E", FirstName ="e", Age =14 },
new Person(){ Name = "F", FirstName ="f", Age =15 },
};
}
}
Xaml:
<ListView ItemsSource="{Binding peoples}" ItemSelected="ListView_ItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding Name}"></Label>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
后面的代码:
public Page5()
{
InitializeComponent();
this.BindingContext = new PersonViewModel();
}
private async void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var selectedItem = e.SelectedItem as Person;
await DisplayActionSheet("Details Page:", "Cancel", null, selectedItem.FirstName, selectedItem.Age.ToString());
}