【发布时间】:2016-08-31 03:38:10
【问题描述】:
对于那些曾经用 Java for Android 编写代码的人,我相信你会立即理解这个概念,而其他人可能不会,但没关系,我会尽力解释我的意思。
我有这个项目,公司一,在工作中交付,我必须开发一个应用程序,其中包含导航抽屉概念表单材料设计,但适应公司的 adm 最喜欢的“概念”开发,即 Xamarin(在这种情况下是 Forms)...使用 Xamarin,嗯,几乎是一样的东西,但它可以实现所需的管理,但是在 Forms 中?...。好吧,让我们说他们还没有了解其背后的概念(很可能是儿童游戏应用程序)并需要一个非常专业的 B2C 应用程序,使用 THAT 开发... -_-
无论如何,在我设法找到并不得不面对的大量其他问题中,是这样的:导航抽屉(这里也称为母版页)需要显示在 AppCompatBar(这里是导航栏)上,因为,好吧,因为这就是使用 Android 应该有的感觉,这就是它与其他所有应用程序的工作方式,这就是它的设计方式,以及它必须如何工作,但你猜怎么着?不能进入 Xamarin 表单...
我已经尝试了https://developer.xamarin.com/guides/xamarin-forms/user-interface/navigation/master-detail-page/,网络上的几个博客和论坛(当然,除了他们的,因为我在 3 个月后仍在等待一个非常简单的答案,并且该项目必须很快以演示的形式呈现),他们的书《创造 带有 Xamarin.Forms 的移动应用程序”,Charles Petzold 的在线视频,什么都没有,不知道如何在调用时在导航栏上显示母版页......
这是 xaml 中主页的代码:
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Mobile.UI.Pages;assembly=Mobile"
x:Class="Mobile.UI.Pages.MainPage"
BackgroundColor="White"
IsGestureEnabled="False"
MasterBehavior="Default">
<MasterDetailPage.Master>
<local:MasterPage x:Name="masterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage
BarBackgroundColor="#27C6E5">
<x:Arguments>
<local:ItemListPage />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
母版页也在 xaml 中:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Mobile.UI.Pages.MasterPage"
Icon="menu.png"
Title="Menu">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness"
iOS="0, 20, 0, 0" />
</ContentPage.Padding>
<StackLayout
VerticalOptions="FillAndExpand">
<StackLayout
VerticalOptions="Fill"
HorizontalOptions="Fill"
HeightRequest="128"
Orientation="Vertical"
BackgroundColor="White"
Padding="4">
<Image
Source="favicon.png"
HeightRequest="128"
WidthRequest="200"
VerticalOptions="Center"
HorizontalOptions="Center" />
</StackLayout>
<ListView
x:Name="menuList"
VerticalOptions="FillAndExpand"
SeparatorVisibility="None"
HasUnevenRows="False">
<ListView.ItemTemplate>
<DataTemplate>
<ImageCell
ImageSource="{Binding IconSource}"
Text="{Binding Title}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
它的代码隐藏:
public ListView ListView
{
get
{
return menuList;
}
}
public MasterPage()
{
InitializeComponent();
Padding = 0;
var menuListItems = new List<MenuListItem>();
menuListItems.Add(new MenuListItem()
{
Title = "Items",
IconSource = "items.png",
TargetType = typeof(ItemListPage)
});
menuListItems.Add(new MenuListItem()
{
Title = "Chat",
IconSource = "chat.png",
TargetType = typeof(ChatListPage)
});
menuList.ItemsSource = menuListItems;
}
还有我的主页:
public partial class MainPage : MasterDetailPage
{
public MainPage()
{
InitializeComponent();
masterPage.ListView.ItemTapped += ListView_ItemTapped;
if (Device.OS == TargetPlatform.WinPhone)
{
Master.Icon = "menu.png";
}
}
private void ListView_ItemTapped(object sender, ItemTappedEventArgs e)
{
var item = e.Item as MenuListItem;
if (item != null)
{
Detail = new NavigationPage((Page)Activator.CreateInstance(item.TargetType))
{
BarBackgroundColor = Color.FromRgb(204, 204, 204),
Title = item.Title
};
masterPage.ListView.SelectedItem = null;
IsPresented = false;
}
}
}
您可能需要的任何其他内容,请尽管询问...
有什么帮助吗?
提前谢谢...
【问题讨论】:
标签: android material-design xamarin.forms master-detail navigationbar