Repository: thrive-now/BottomNavigationBarXF
Branch: master
Commit: eae99875fb2c
Files: 67
Total size: 141.6 KB
Directory structure:
gitextract_5bvqld56/
├── .gitignore
├── BottomBar.Droid/
│ ├── BottomBar.Droid.csproj
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Renderers/
│ │ └── BottomBarPageRenderer.cs
│ ├── Resources/
│ │ ├── AboutResources.txt
│ │ └── values/
│ │ └── Strings.xml
│ ├── Utils/
│ │ ├── IPageController.cs
│ │ ├── MeasureSpecFactory.cs
│ │ ├── PageController.cs
│ │ ├── ReflectedProxy.cs
│ │ └── ResourceManagerEx.cs
│ └── packages.config
├── BottomBar.XamarinForms/
│ ├── BottomBar.XamarinForms.csproj
│ ├── BottomBarPage.cs
│ ├── BottomBarPageExtensions.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── packages.config
├── BottomBar.nuspec
├── BottomBarXF.sln
├── LICENSE
├── README.md
├── example/
│ ├── BottomBarXFExample/
│ │ ├── App.xaml
│ │ ├── App.xaml.cs
│ │ ├── BottomBarXFExample.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── TabPage.xaml
│ │ ├── TabPage.xaml.cs
│ │ └── packages.config
│ ├── BottomBarXFExample.Droid/
│ │ ├── Assets/
│ │ │ └── AboutAssets.txt
│ │ ├── BottomBarXFExample.Droid.csproj
│ │ ├── MainActivity.cs
│ │ ├── Properties/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── AssemblyInfo.cs
│ │ ├── Resources/
│ │ │ ├── AboutResources.txt
│ │ │ ├── layout/
│ │ │ │ ├── Tabbar.axml
│ │ │ │ └── Toolbar.axml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ └── packages.config
│ └── BottomBarXFExample.iOS/
│ ├── AppDelegate.cs
│ ├── BottomBarXFExample.iOS.csproj
│ ├── Entitlements.plist
│ ├── Info.plist
│ ├── Main.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Resources/
│ │ └── LaunchScreen.xib
│ └── packages.config
└── example-xaml/
├── BottomBarXFExampleXaml/
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── BarPage.xaml
│ ├── BarPage.xaml.cs
│ ├── BottomBarXFExampleXaml.csproj
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── TabPage.xaml
│ ├── TabPage.xaml.cs
│ └── packages.config
└── BottomBarXFExampleXaml.Droid/
├── Assets/
│ └── AboutAssets.txt
├── BottomBarXFExampleXaml.Droid.csproj
├── MainActivity.cs
├── Properties/
│ ├── AndroidManifest.xml
│ └── AssemblyInfo.cs
├── Resources/
│ ├── AboutResources.txt
│ ├── layout/
│ │ ├── Tabbar.axml
│ │ └── Toolbar.axml
│ └── values/
│ ├── colors.xml
│ └── styles.xml
└── packages.config
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
## Xamarin stuff
Components
[Pp]ackages
*.userprefs
Resource.designer.cs
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
x64/
build/
bld/
[Bb]in/
[Oo]bj/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
#NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
*.ncrunch*
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# NuGet Packages Directory
packages/
## TODO: If the tool you use requires repositories.config uncomment the next line
#!packages/repositories.config
# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
# This line needs to be after the ignore of the build folder (and the packages folder if the line above has been uncommented)
!packages/build/
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
*.userprefs
.DS_Store
================================================
FILE: BottomBar.Droid/BottomBar.Droid.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AndroidSdkBuildToolsVersion>23.0.3</AndroidSdkBuildToolsVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{96746A3E-074D-40C6-B2E2-CA90313012C6}</ProjectGuid>
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<RootNamespace>BottomBar.Droid</RootNamespace>
<AssemblyName>BottomBar.Droid</AssemblyName>
<TargetFrameworkVersion>v6.0</TargetFrameworkVersion>
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<AndroidResgenClass>Resource</AndroidResgenClass>
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
<ReleaseVersion>0.8</ReleaseVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<AndroidLinkMode>None</AndroidLinkMode>
<AndroidSupportedAbis>arm64-v8a;armeabi;armeabi-v7a;x86</AndroidSupportedAbis>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="Mono.Android" />
<Reference Include="Xamarin.Android.Support.v4">
<HintPath>..\packages\Xamarin.Android.Support.v4.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Vector.Drawable">
<HintPath>..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Vector.Drawable.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Animated.Vector.Drawable">
<HintPath>..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Animated.Vector.Drawable.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.RecyclerView">
<HintPath>..\packages\Xamarin.Android.Support.v7.RecyclerView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.RecyclerView.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Design">
<HintPath>..\packages\Xamarin.Android.Support.Design.23.3.0\lib\MonoAndroid43\Xamarin.Android.Support.Design.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.CardView">
<HintPath>..\packages\Xamarin.Android.Support.v7.CardView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.CardView.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.MediaRouter">
<HintPath>..\packages\Xamarin.Android.Support.v7.MediaRouter.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.MediaRouter.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.AppCompat">
<HintPath>..\packages\Xamarin.Android.Support.v7.AppCompat.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="BottomNavigationBar">
<HintPath>..\packages\BottomNavigationBar.1.4.0.2\lib\MonoAndroid403\BottomNavigationBar.dll</HintPath>
</Reference>
<Reference Include="FormsViewGroup">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\FormsViewGroup.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Core">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.Android">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Resources\Resource.designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Renderers\BottomBarPageRenderer.cs" />
<Compile Include="Utils\ResourceManagerEx.cs" />
<Compile Include="Utils\MeasureSpecFactory.cs" />
<Compile Include="Utils\ReflectedProxy.cs" />
<Compile Include="Utils\PageController.cs" />
<Compile Include="Utils\IPageController.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\AboutResources.txt" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\values\Strings.xml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BottomBar.XamarinForms\BottomBar.XamarinForms.csproj">
<Project>{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}</Project>
<Name>BottomBar.XamarinForms</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Renderers\" />
<Folder Include="Utils\" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<Import Project="..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets')" />
<Import Project="..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
</Project>
================================================
FILE: BottomBar.Droid/Properties/AssemblyInfo.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle ("BottomBar.Droid")]
[assembly: AssemblyDescription ("Bottom Bar implementation for Xamarin Forms - Android Renderer")]
[assembly: AssemblyConfiguration ("")]
[assembly: AssemblyCompany ("")]
[assembly: AssemblyProduct ("")]
[assembly: AssemblyCopyright ("sebs")]
[assembly: AssemblyTrademark ("")]
[assembly: AssemblyCulture ("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion ("1.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]
================================================
FILE: BottomBar.Droid/Renderers/BottomBarPageRenderer.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using BottomBar.XamarinForms;
using BottomNavigationBar;
using BottomNavigationBar.Listeners;
using Android.Views;
using Android.Widget;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using Xamarin.Forms.Platform.Android.AppCompat;
using BottomBar.Droid.Renderers;
using BottomBar.Droid.Utils;
[assembly: ExportRenderer (typeof (BottomBarPage), typeof (BottomBarPageRenderer))]
namespace BottomBar.Droid.Renderers
{
public class BottomBarPageRenderer : VisualElementRenderer<BottomBarPage>, IOnTabClickListener
{
bool _disposed;
BottomNavigationBar.BottomBar _bottomBar;
FrameLayout _frameLayout;
IPageController _pageController;
IDictionary<Page, BottomBarBadge> _badges;
public BottomBarPageRenderer ()
{
AutoPackage = false;
}
#region IOnTabClickListener
public virtual void OnTabSelected (int position)
{
//Do we need this call? It's also done in OnElementPropertyChanged
SwitchContent(Element.Children [position]);
var bottomBarPage = Element as BottomBarPage;
bottomBarPage.CurrentPage = Element.Children[position];
//bottomBarPage.RaiseCurrentPageChanged();
}
public virtual void OnTabReSelected (int position)
{
}
#endregion
protected override void Dispose (bool disposing)
{
if (disposing && !_disposed) {
_disposed = true;
RemoveAllViews ();
foreach (Page pageToRemove in Element.Children) {
IVisualElementRenderer pageRenderer = Platform.GetRenderer (pageToRemove);
if (pageRenderer != null) {
pageRenderer.ViewGroup.RemoveFromParent ();
pageRenderer.Dispose ();
}
pageToRemove.PropertyChanged -= OnPagePropertyChanged;
// pageToRemove.ClearValue (Platform.RendererProperty);
}
if (_badges != null)
{
_badges.Clear();
_badges = null;
}
if (_bottomBar != null) {
_bottomBar.SetOnTabClickListener (null);
_bottomBar.Dispose ();
_bottomBar = null;
}
if (_frameLayout != null) {
_frameLayout.Dispose ();
_frameLayout = null;
}
/*if (Element != null) {
PageController.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
}*/
}
base.Dispose (disposing);
}
protected override void OnAttachedToWindow ()
{
base.OnAttachedToWindow ();
_pageController.SendAppearing ();
}
protected override void OnDetachedFromWindow ()
{
base.OnDetachedFromWindow ();
_pageController.SendDisappearing ();
}
protected override void OnElementChanged (ElementChangedEventArgs<BottomBarPage> e)
{
base.OnElementChanged (e);
if (e.NewElement != null) {
BottomBarPage bottomBarPage = e.NewElement;
if (_bottomBar == null) {
_pageController = PageController.Create (bottomBarPage);
// create a view which will act as container for Page's
_frameLayout = new FrameLayout (Forms.Context);
_frameLayout.LayoutParameters = new FrameLayout.LayoutParams (LayoutParams.MatchParent, LayoutParams.MatchParent, GravityFlags.Fill);
AddView (_frameLayout, 0);
// create bottomBar control
_bottomBar = BottomNavigationBar.BottomBar.Attach (_frameLayout, null);
_bottomBar.NoTabletGoodness ();
if (bottomBarPage.FixedMode)
{
_bottomBar.UseFixedMode();
}
switch (bottomBarPage.BarTheme)
{
case BottomBarPage.BarThemeTypes.Light:
break;
case BottomBarPage.BarThemeTypes.DarkWithAlpha:
_bottomBar.UseDarkThemeWithAlpha(true);
break;
case BottomBarPage.BarThemeTypes.DarkWithoutAlpha:
_bottomBar.UseDarkThemeWithAlpha(false);
break;
default:
throw new ArgumentOutOfRangeException();
}
_bottomBar.LayoutParameters = new LayoutParams (LayoutParams.MatchParent, LayoutParams.MatchParent);
_bottomBar.SetOnTabClickListener (this);
UpdateTabs ();
UpdateBarBackgroundColor ();
UpdateBarTextColor ();
}
if (bottomBarPage.CurrentPage != null) {
SwitchContent (bottomBarPage.CurrentPage);
}
}
}
protected override void OnElementPropertyChanged (object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == nameof (TabbedPage.CurrentPage)) {
SwitchContent (Element.CurrentPage);
UpdateSelectedTabIndex(Element.CurrentPage);
} else if (e.PropertyName == NavigationPage.BarBackgroundColorProperty.PropertyName) {
UpdateBarBackgroundColor ();
} else if (e.PropertyName == NavigationPage.BarTextColorProperty.PropertyName) {
UpdateBarTextColor ();
}
}
protected virtual void SwitchContent (Page view)
{
Context.HideKeyboard (this);
_frameLayout.RemoveAllViews ();
if (view == null) {
return;
}
if (Platform.GetRenderer (view) == null) {
Platform.SetRenderer (view, Platform.CreateRenderer (view));
}
_frameLayout.AddView (Platform.GetRenderer (view).ViewGroup);
}
protected override void OnLayout (bool changed, int l, int t, int r, int b)
{
int width = r - l;
int height = b - t;
var context = Context;
_bottomBar.Measure (MeasureSpecFactory.MakeMeasureSpec (width, MeasureSpecMode.Exactly), MeasureSpecFactory.MakeMeasureSpec (height, MeasureSpecMode.AtMost));
int tabsHeight = Math.Min (height, Math.Max (_bottomBar.MeasuredHeight, _bottomBar.MinimumHeight));
if (width > 0 && height > 0) {
_pageController.ContainerArea = new Rectangle(0, 0, context.FromPixels(width), context.FromPixels(_frameLayout.MeasuredHeight));
ObservableCollection<Element> internalChildren = _pageController.InternalChildren;
for (var i = 0; i < internalChildren.Count; i++) {
var child = internalChildren [i] as VisualElement;
if (child == null) {
continue;
}
IVisualElementRenderer renderer = Platform.GetRenderer (child);
var navigationRenderer = renderer as NavigationPageRenderer;
if (navigationRenderer != null) {
// navigationRenderer.ContainerPadding = tabsHeight;
}
}
_bottomBar.Measure (MeasureSpecFactory.MakeMeasureSpec (width, MeasureSpecMode.Exactly), MeasureSpecFactory.MakeMeasureSpec (tabsHeight, MeasureSpecMode.Exactly));
_bottomBar.Layout (0, 0, width, tabsHeight);
}
base.OnLayout (changed, l, t, r, b);
}
void UpdateSelectedTabIndex(Page page)
{
var index = Element.Children.IndexOf(page);
_bottomBar.SelectTabAtPosition(index, true);
}
void UpdateBarBackgroundColor ()
{
if (_disposed || _bottomBar == null) {
return;
}
_bottomBar.SetBackgroundColor (Element.BarBackgroundColor.ToAndroid ());
}
void UpdateBarTextColor ()
{
if (_disposed || _bottomBar == null) {
return;
}
_bottomBar.SetActiveTabColor(Element.BarTextColor.ToAndroid());
// The problem SetActiveTabColor does only work in fiexed mode // haven't found yet how to set text color for tab items on_bottomBar, doesn't seem to have a direct way
}
void UpdateTabs ()
{
// create tab items
SetTabItems ();
// set tab colors
SetTabColors ();
SetTabBadges();
AddPropertyChangedHandlersForPages();
}
void SetTabItems ()
{
BottomBarTab [] tabs = Element.Children.Select (page => {
var tabIconId = ResourceManagerEx.IdFromTitle (page.Icon, ResourceManager.DrawableClass);
return new BottomBarTab (tabIconId, page.Title);
}).ToArray ();
if (tabs.Length > 0)
{
_bottomBar.SetItems(tabs);
}
}
void SetTabColors ()
{
for (int i = 0; i < Element.Children.Count; ++i) {
Page page = Element.Children [i];
Color tabColor = BottomBarPageExtensions.GetTabColor(page);
if (tabColor != Color.Transparent)
{
_bottomBar.MapColorForTab (i, tabColor.ToAndroid ());
}
}
}
void SetTabBadges()
{
_badges = new Dictionary<Page, BottomBarBadge>(Element.Children.Count);
for(var i = 0; i < Element.Children.Count; i++)
{
var page = Element.Children[i];
CreateOrUpdateBadgeForPage(page);
}
}
void AddPropertyChangedHandlersForPages()
{
foreach (var page in Element.Children)
{
page.PropertyChanged += OnPagePropertyChanged;
}
}
void OnPagePropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == BottomBarPageExtensions.BadgeCountProperty.PropertyName)
{
var page = (Page)sender;
CreateOrUpdateBadgeForPage(page);
}
}
/// <summary>
/// Creates or updates a badge for a page
/// </summary>
/// <param name="page"></param>
void CreateOrUpdateBadgeForPage(Page page)
{
var pageIndex = Element.Children.IndexOf(page);
var badgeCount = BottomBarPageExtensions.GetBadgeCount(page);
BottomBarBadge badge;
// We'll have to keep track of our badges, otherwise we can't update
// and removing + inserting again gives a crappy user experience
if (_badges.ContainsKey(page))
{
badge = _badges[page];
}
else
{
// Don't need to create a badge when there's no badge to show
if (badgeCount == 0) return;
// BottomBarBadge does not allow us to set color after init. You could, but you'd have to
// do it manually because the circle background logic is hidden from us
var badgeColor = BottomBarPageExtensions.GetBadgeColor(page);
badge = _bottomBar.MakeBadgeForTabAt(pageIndex, badgeColor.ToAndroid(), badgeCount);
_badges.Add(page, badge);
}
// Let's assume that if the new badge count is zero the
// default behavior will be to hide the badge
if (badgeCount == 0)
{
badge.Hide();
}
else
{
badge.Count = badgeCount;
badge.Show();
}
}
}
}
================================================
FILE: BottomBar.Droid/Resources/AboutResources.txt
================================================
Images, layout descriptions, binary blobs and string dictionaries can be included
in your application as resource files. Various Android APIs are designed to
operate on the resource IDs instead of dealing with images, strings or binary blobs
directly.
For example, a sample Android app that contains a user interface layout (main.axml),
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
would keep its resources in the "Resources" directory of the application:
Resources/
drawable/
icon.png
layout/
main.axml
values/
strings.xml
In order to get the build system to recognize Android resources, set the build action to
"AndroidResource". The native Android APIs do not operate directly with filenames, but
instead operate on resource IDs. When you compile an Android application that uses resources,
the build system will package the resources for distribution and generate a class called "R"
(this is an Android convention) that contains the tokens for each one of the resources
included. For example, for the above Resources layout, this is what the R class would expose:
public class R {
public class drawable {
public const int icon = 0x123;
}
public class layout {
public const int main = 0x456;
}
public class strings {
public const int first_string = 0xabc;
public const int second_string = 0xbcd;
}
}
You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
to reference the layout/main.axml file, or R.strings.first_string to reference the first
string in the dictionary file values/strings.xml.
================================================
FILE: BottomBar.Droid/Resources/values/Strings.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name="library_name">BottomBar.Droid</string>
</resources>
================================================
FILE: BottomBar.Droid/Utils/IPageController.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Collections.ObjectModel;
using Xamarin.Forms;
namespace BottomBar.Droid
{
public interface IPageController
{
Rectangle ContainerArea { get; set; }
bool IgnoresContainerArea { get; set; }
ObservableCollection<Element> InternalChildren { get; }
void SendAppearing ();
void SendDisappearing ();
}
}
================================================
FILE: BottomBar.Droid/Utils/MeasureSpecFactory.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using Android.Views;
namespace BottomBar.Droid.Utils
{
internal static class MeasureSpecFactory
{
public static int GetSize (int measureSpec)
{
const int modeMask = 0x3 << 30;
return measureSpec & ~modeMask;
}
// Literally does the same thing as the android code, 1000x faster because no bridge cross
// benchmarked by calling 1,000,000 times in a loop on actual device
public static int MakeMeasureSpec (int size, MeasureSpecMode mode)
{
return size + (int)mode;
}
}
}
================================================
FILE: BottomBar.Droid/Utils/PageController.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Collections.ObjectModel;
using Xamarin.Forms;
namespace BottomBar.Droid
{
public class PageController : IPageController
{
private ReflectedProxy<Page> _proxy;
public static IPageController Create (Page page)
{
return new PageController (page);
}
PageController (Page page)
{
_proxy = new ReflectedProxy<Page> (page);
}
public Rectangle ContainerArea {
get {
return _proxy.GetPropertyValue<Rectangle> ();
}
set {
_proxy.SetPropertyValue (value);
}
}
public bool IgnoresContainerArea {
get {
return _proxy.GetPropertyValue<bool> ();
}
set {
_proxy.SetPropertyValue (value);
}
}
public ObservableCollection<Element> InternalChildren {
get {
return _proxy.GetPropertyValue<ObservableCollection<Element>> ();
}
set {
_proxy.SetPropertyValue (value);
}
}
public void SendAppearing ()
{
_proxy.Call ();
}
public void SendDisappearing ()
{
_proxy.Call ();
}
}
}
================================================
FILE: BottomBar.Droid/Utils/ReflectedProxy.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
namespace BottomBar.Droid
{
public class ReflectedProxy<T> where T : class
{
private object _target;
private readonly Dictionary<string, PropertyInfo> _cachedPropertyInfo;
private readonly Dictionary<string, MethodInfo> _cachedMethodInfo;
private readonly IEnumerable<PropertyInfo> _targetPropertyInfoList;
private readonly IEnumerable<MethodInfo> _targetMethodInfoList;
public ReflectedProxy(T target)
{
_target = target;
_cachedPropertyInfo = new Dictionary<string, PropertyInfo>();
_cachedMethodInfo = new Dictionary<string, MethodInfo>();
TypeInfo typeInfo = typeof(T).GetTypeInfo();
_targetPropertyInfoList = typeInfo.GetRuntimeProperties();
_targetMethodInfoList = typeInfo.GetRuntimeMethods();
}
public void SetPropertyValue(object value, [CallerMemberName] string propertyName = "")
{
GetPropertyInfo(propertyName).SetValue(_target, value);
}
public TPropertyValue GetPropertyValue<TPropertyValue>([CallerMemberName] string propertyName = "")
{
return (TPropertyValue)GetPropertyInfo(propertyName).GetValue(_target);
}
public object Call([CallerMemberName] string methodName = "", object[] parameters = null)
{
if (!_cachedMethodInfo.ContainsKey(methodName))
{
_cachedMethodInfo[methodName] = _targetMethodInfoList.Single(mi => mi.Name == methodName || mi.Name.Contains("." + methodName));
}
return _cachedMethodInfo[methodName].Invoke(_target, parameters);
}
PropertyInfo GetPropertyInfo(string propertyName)
{
if (!_cachedPropertyInfo.ContainsKey(propertyName))
{
_cachedPropertyInfo[propertyName] = _targetPropertyInfoList.Single(pi => pi.Name == propertyName || pi.Name.Contains("." + propertyName));
}
return _cachedPropertyInfo[propertyName];
}
}
}
================================================
FILE: BottomBar.Droid/Utils/ResourceManagerEx.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.IO;
using System.Linq;
using System.Reflection;
namespace BottomBar.Droid.Utils
{
internal static class ResourceManagerEx
{
internal static int IdFromTitle (string title, Type type)
{
string name = Path.GetFileNameWithoutExtension (title);
int id = GetId (type, name);
return id; // Resources.System.GetDrawable (Resource.Drawable.dashboard);
}
static int GetId (Type type, string propertyName)
{
FieldInfo [] props = type.GetFields ();
FieldInfo prop = props.Select (p => p).FirstOrDefault (p => p.Name == propertyName);
if (prop != null)
return (int)prop.GetValue (type);
return 0;
}
}
}
================================================
FILE: BottomBar.Droid/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BottomNavigationBar" version="1.4.0.2" targetFramework="monoandroid70" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Forms" version="2.3.2.127" targetFramework="monoandroid70" />
</packages>
================================================
FILE: BottomBar.XamarinForms/BottomBar.XamarinForms.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}</ProjectGuid>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<UseMSBuildEngine>true</UseMSBuildEngine>
<OutputType>Library</OutputType>
<RootNamespace>BottomBar.XamarinForms</RootNamespace>
<AssemblyName>BottomBar.XamarinForms</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile78</TargetFrameworkProfile>
<ReleaseVersion>0.8</ReleaseVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="BottomBarPage.cs" />
<Compile Include="BottomBarPageExtensions.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Core">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<Import Project="..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
</Project>
================================================
FILE: BottomBar.XamarinForms/BottomBarPage.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using Xamarin.Forms;
namespace BottomBar.XamarinForms
{
public class BottomBarPage : TabbedPage
{
public enum BarThemeTypes { Light, DarkWithAlpha, DarkWithoutAlpha }
public bool FixedMode { get; set; }
public BarThemeTypes BarTheme { get; set; }
public void RaiseCurrentPageChanged()
{
OnCurrentPageChanged();
}
}
}
================================================
FILE: BottomBar.XamarinForms/BottomBarPageExtensions.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using Xamarin.Forms;
namespace BottomBar.XamarinForms
{
public static class BottomBarPageExtensions
{
#region TabColorProperty
public static readonly BindableProperty TabColorProperty = BindableProperty.CreateAttached(
"TabColor",
typeof(Color),
typeof(BottomBarPageExtensions),
Color.Transparent);
public static readonly BindableProperty BadgeCountProperty = BindableProperty.CreateAttached(
"BadgeCount",
typeof(int),
typeof(BottomBarPageExtensions),
0);
public static readonly BindableProperty BadgeColorProperty = BindableProperty.CreateAttached(
"BadgeColor",
typeof(Color),
typeof(BottomBarPageExtensions),
Color.Red);
public static void SetTabColor(BindableObject bindable, Color color)
{
bindable.SetValue(TabColorProperty, color);
}
public static Color GetTabColor(BindableObject bindable)
{
return (Color)bindable.GetValue(TabColorProperty);
}
public static void SetBadgeCount(BindableObject bindable, int badgeCount)
{
bindable.SetValue(BadgeCountProperty, badgeCount);
}
public static int GetBadgeCount(BindableObject bindable)
{
return (int)bindable.GetValue(BadgeCountProperty);
}
public static void SetBadgeColor(BindableObject bindable, Color color)
{
bindable.SetValue(BadgeColorProperty, color);
}
public static Color GetBadgeColor(BindableObject bindable)
{
return (Color)bindable.GetValue(BadgeColorProperty);
}
#endregion
}
}
================================================
FILE: BottomBar.XamarinForms/Properties/AssemblyInfo.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle ("BottomBar.XamarinForms")]
[assembly: AssemblyDescription ("Bottom Bar implementation for Xamarin Forms")]
[assembly: AssemblyConfiguration ("")]
[assembly: AssemblyCompany ("")]
[assembly: AssemblyProduct ("")]
[assembly: AssemblyCopyright ("sebs")]
[assembly: AssemblyTrademark ("")]
[assembly: AssemblyCulture ("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion ("1.0.*")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]
================================================
FILE: BottomBar.XamarinForms/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Xamarin.Forms" version="2.3.2.127" targetFramework="portable45-net45+win8+wp8" />
</packages>
================================================
FILE: BottomBar.nuspec
================================================
<?xml version="1.0"?>
<package >
<metadata>
<id>ThriveGmbH.BottomNavigationBar.XF</id>
<version>1.0.2</version>
<title>BottomNavigationBar for Xamarin Forms</title>
<authors>Sebastian Schmidt, Lukas Holota</authors>
<licenseUrl>https://github.com/thrive-now/bottom-navigation-bar-xf/blob/master/LICENSE</licenseUrl>
<projectUrl>https://github.com/thrive-now/bottom-navigation-bar-xf</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>A Bottom Navigation Bar implementation for Xamarin Forms.</description>
<copyright>Copyright 2017</copyright>
<tags>bottombar xamarin xamarinforms</tags>
<dependencies>
<group targetFramework="MonoAndroid10">
<dependency id="BottomNavigationBar" version="[1.1.2,)" />
</group>
</dependencies>
</metadata>
<files>
<!-- portable -->
<file src="BottomBar.XamarinForms\bin\Release\BottomBar.XamarinForms.dll" target="lib\portable-net45+win8+wpa81\BottomBar.XamarinForms.dll" />
<!-- android -->
<file src="BottomBar.Droid\bin\Release\BottomBar.Droid.dll" target="lib\MonoAndroid10\BottomBar.Droid.dll" />
<file src="BottomBar.XamarinForms\bin\Release\BottomBar.XamarinForms.dll" target="lib\MonoAndroid10\BottomBar.XamarinForms.dll" />
<!-- iOSUnified -->
<file src="BottomBar.XamarinForms\bin\Release\BottomBar.XamarinForms.dll" target="lib\Xamarin.iOS10\BottomBar.XamarinForms.dll" />
</files>
</package>
================================================
FILE: BottomBarXF.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BottomBarXFExample", "example\BottomBarXFExample\BottomBarXFExample.csproj", "{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BottomBarXFExample.Droid", "example\BottomBarXFExample.Droid\BottomBarXFExample.Droid.csproj", "{03FE6BCA-AA3B-4689-A829-DB87D51A149E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BottomBar.XamarinForms", "BottomBar.XamarinForms\BottomBar.XamarinForms.csproj", "{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BottomBar.Droid", "BottomBar.Droid\BottomBar.Droid.csproj", "{96746A3E-074D-40C6-B2E2-CA90313012C6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Example - XF", "Example - XF", "{21BCEE36-ACC1-40B6-99F8-C55B1EFB24AC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Example - XF XAML", "Example - XF XAML", "{EB8CE116-C94E-4674-82D7-7A2978B32A17}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BottomBarXFExampleXaml", "example-xaml\BottomBarXFExampleXaml\BottomBarXFExampleXaml.csproj", "{D72B487F-AA32-45B3-92B1-C36BC5659CBF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BottomBarXFExampleXaml.Droid", "example-xaml\BottomBarXFExampleXaml.Droid\BottomBarXFExampleXaml.Droid.csproj", "{C5BC9521-E9B9-44E3-A505-256080B78234}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BottomBarXFExample.iOS", "example\BottomBarXFExample.iOS\BottomBarXFExample.iOS.csproj", "{7AB8FBA6-4F0B-409F-B891-104BA3554470}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
Ad-Hoc|iPhone = Ad-Hoc|iPhone
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
AppStore|Any CPU = AppStore|Any CPU
AppStore|iPhone = AppStore|iPhone
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
Debug|Any CPU = Debug|Any CPU
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Release|Any CPU = Release|Any CPU
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.AppStore|Any CPU.Build.0 = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.AppStore|iPhone.ActiveCfg = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.AppStore|iPhone.Build.0 = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Debug|Any CPU.Build.0 = Debug|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Debug|iPhone.Build.0 = Debug|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Release|Any CPU.ActiveCfg = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Release|Any CPU.Build.0 = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Release|iPhone.ActiveCfg = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Release|iPhone.Build.0 = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.AppStore|Any CPU.Build.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.AppStore|iPhone.ActiveCfg = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.AppStore|iPhone.Build.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.AppStore|iPhone.Deploy.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Debug|iPhone.Build.0 = Debug|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Release|Any CPU.Build.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Release|Any CPU.Deploy.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Release|iPhone.ActiveCfg = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Release|iPhone.Build.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Release|iPhone.Deploy.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{03FE6BCA-AA3B-4689-A829-DB87D51A149E}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.AppStore|Any CPU.Build.0 = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.AppStore|iPhone.ActiveCfg = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.AppStore|iPhone.Build.0 = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Debug|iPhone.Build.0 = Debug|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Release|Any CPU.Build.0 = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Release|iPhone.ActiveCfg = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Release|iPhone.Build.0 = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.AppStore|Any CPU.Build.0 = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.AppStore|iPhone.ActiveCfg = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.AppStore|iPhone.Build.0 = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Debug|iPhone.Build.0 = Debug|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Release|Any CPU.Build.0 = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Release|iPhone.ActiveCfg = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Release|iPhone.Build.0 = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{96746A3E-074D-40C6-B2E2-CA90313012C6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.AppStore|Any CPU.Build.0 = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.AppStore|iPhone.ActiveCfg = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.AppStore|iPhone.Build.0 = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Debug|iPhone.Build.0 = Debug|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Release|Any CPU.Build.0 = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Release|iPhone.ActiveCfg = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Release|iPhone.Build.0 = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D72B487F-AA32-45B3-92B1-C36BC5659CBF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.AppStore|Any CPU.Build.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.AppStore|iPhone.ActiveCfg = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.AppStore|iPhone.Build.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.AppStore|iPhone.Deploy.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Debug|iPhone.Build.0 = Debug|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Release|Any CPU.Build.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Release|Any CPU.Deploy.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Release|iPhone.ActiveCfg = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Release|iPhone.Build.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Release|iPhone.Deploy.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{C5BC9521-E9B9-44E3-A505-256080B78234}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.AppStore|iPhone.Build.0 = AppStore|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Debug|Any CPU.ActiveCfg = Debug|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Debug|iPhone.ActiveCfg = Debug|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Debug|iPhone.Build.0 = Debug|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Release|Any CPU.ActiveCfg = Release|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Release|iPhone.ActiveCfg = Release|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Release|iPhone.Build.0 = Release|iPhone
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{7AB8FBA6-4F0B-409F-B891-104BA3554470}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738} = {21BCEE36-ACC1-40B6-99F8-C55B1EFB24AC}
{03FE6BCA-AA3B-4689-A829-DB87D51A149E} = {21BCEE36-ACC1-40B6-99F8-C55B1EFB24AC}
{D72B487F-AA32-45B3-92B1-C36BC5659CBF} = {EB8CE116-C94E-4674-82D7-7A2978B32A17}
{C5BC9521-E9B9-44E3-A505-256080B78234} = {EB8CE116-C94E-4674-82D7-7A2978B32A17}
{7AB8FBA6-4F0B-409F-B891-104BA3554470} = {21BCEE36-ACC1-40B6-99F8-C55B1EFB24AC}
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
Policies = $0
$0.DotNetNamingPolicy = $1
$1.DirectoryNamespaceAssociation = None
$1.ResourceNamePolicy = FileFormatDefault
$0.StandardHeader = $2
$2.Text =
$2.IncludeInNewFiles = True
$0.NameConventionPolicy = $3
$3.Rules = $4
$4.NamingRule = $24
$5.Name = Type Parameters
$5.AffectedEntity = TypeParameter
$5.VisibilityMask = VisibilityMask
$5.NamingStyle = PascalCase
$5.IncludeInstanceMembers = True
$5.IncludeStaticEntities = True
$5.RequiredPrefixes = $27
$27.String = T
$5.RequiredSuffixes = $28
$28.String = Exception
$6.Name = Types
$6.AffectedEntity = Class, Struct, Enum, Delegate
$6.VisibilityMask = Public
$6.NamingStyle = PascalCase
$6.IncludeInstanceMembers = True
$6.IncludeStaticEntities = True
$7.Name = Interfaces
$7.RequiredPrefixes = $8
$8.String = I
$7.AffectedEntity = Interface
$7.VisibilityMask = Public
$7.NamingStyle = PascalCase
$7.IncludeInstanceMembers = True
$7.IncludeStaticEntities = True
$9.Name = Attributes
$9.RequiredSuffixes = $10
$10.String = Attribute
$9.AffectedEntity = CustomAttributes
$9.VisibilityMask = Public
$9.NamingStyle = PascalCase
$9.IncludeInstanceMembers = True
$9.IncludeStaticEntities = True
$11.Name = Event Arguments
$11.RequiredSuffixes = $12
$12.String = EventArgs
$11.AffectedEntity = CustomEventArgs
$11.VisibilityMask = Public
$11.NamingStyle = PascalCase
$11.IncludeInstanceMembers = True
$11.IncludeStaticEntities = True
$13.Name = Exceptions
$13.RequiredSuffixes = $14
$14.String = Exception
$13.AffectedEntity = CustomExceptions
$13.VisibilityMask = VisibilityMask
$13.NamingStyle = PascalCase
$13.IncludeInstanceMembers = True
$13.IncludeStaticEntities = True
$15.Name = Methods
$15.AffectedEntity = Methods
$15.VisibilityMask = Protected, Public
$15.NamingStyle = PascalCase
$15.IncludeInstanceMembers = True
$15.IncludeStaticEntities = True
$16.Name = Static Readonly Fields
$16.AffectedEntity = ReadonlyField
$16.VisibilityMask = Protected, Public
$16.NamingStyle = PascalCase
$16.IncludeInstanceMembers = False
$16.IncludeStaticEntities = True
$17.Name = Fields
$17.AffectedEntity = Field
$17.VisibilityMask = Protected, Public
$17.NamingStyle = PascalCase
$17.IncludeInstanceMembers = True
$17.IncludeStaticEntities = True
$18.Name = ReadOnly Fields
$18.AffectedEntity = ReadonlyField
$18.VisibilityMask = Protected, Public
$18.NamingStyle = PascalCase
$18.IncludeInstanceMembers = True
$18.IncludeStaticEntities = False
$19.Name = Constant Fields
$19.AffectedEntity = ConstantField
$19.VisibilityMask = Protected, Public
$19.NamingStyle = PascalCase
$19.IncludeInstanceMembers = True
$19.IncludeStaticEntities = True
$20.Name = Properties
$20.AffectedEntity = Property
$20.VisibilityMask = Protected, Public
$20.NamingStyle = PascalCase
$20.IncludeInstanceMembers = True
$20.IncludeStaticEntities = True
$21.Name = Events
$21.AffectedEntity = Event
$21.VisibilityMask = Protected, Public
$21.NamingStyle = PascalCase
$21.IncludeInstanceMembers = True
$21.IncludeStaticEntities = True
$22.Name = Enum Members
$22.AffectedEntity = EnumMember
$22.VisibilityMask = VisibilityMask
$22.NamingStyle = PascalCase
$22.IncludeInstanceMembers = True
$22.IncludeStaticEntities = True
$23.Name = Parameters
$23.AffectedEntity = Parameter
$23.VisibilityMask = VisibilityMask
$23.NamingStyle = CamelCase
$23.IncludeInstanceMembers = True
$23.IncludeStaticEntities = True
$24.Name = Type Parameters
$24.RequiredPrefixes = $25
$25.String = T
$24.AffectedEntity = TypeParameter
$24.VisibilityMask = VisibilityMask
$24.NamingStyle = PascalCase
$24.IncludeInstanceMembers = True
$24.IncludeStaticEntities = True
$0.VersionControlPolicy = $26
$26.inheritsSet = Mono
version = 0.8
EndGlobalSection
EndGlobal
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2016 Sebastian Schmidt
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# BottomNavigationBarXF
A Bottom Navigation Bar implementation for Xamarin Forms.
It's using the [Bottom Navigation Bar](https://github.com/pocheshire/BottomNavigationBar) project to render the Navigation Bar on Android. It will render a standard TabbedPage on iOS.
# Introduction
[](https://www.youtube.com/watch?v=Cp_2F621Az0)
Thanks to Houssem Dellai for this great introductionary video.
# NuGet
Find it [here](https://www.nuget.org/packages/ThriveGmbH.BottomNavigationBar.XF/).
## License
The MIT License (MIT)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: example/BottomBarXFExample/App.xaml
================================================
<?xml version="1.0" encoding="utf-8"?>
<Application
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BottomBarXFExample.App">
<Application.Resources>
</Application.Resources>
</Application>
================================================
FILE: example/BottomBarXFExample/App.xaml.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using BottomBar.XamarinForms;
using Xamarin.Forms;
namespace BottomBarXFExample
{
public partial class App : Application
{
public App ()
{
InitializeComponent ();
BottomBarPage bottomBarPage = new BottomBarPage ();
//bottomBarPage.BarBackgroundColor = Color.Pink;
// You can only define the color for the active icon if you set the Bottombar to fixed mode
// So if you want to try this, just uncomment the next two lines
//bottomBarPage.BarTextColor = Color.Blue; // Setting Color of selected Text and Icon
//bottomBarPage.FixedMode = true;
// Whith BarTheme you can select between light and dark theming when using FixedMode
// When using DarkTheme you can set the Background Color by adding a colors.xml to you Android.Resources.Values
// with content
//
// <color name="white">#ffffff</color>
// < color name = "bb_darkBackgroundColor" >#000000</color>
//
// by setting "white" you can select the color of the non selected items and texts in dark theme
// The Difference between DarkThemeWithAlpha and DarkThemeWithoutAlpha is that WithAlpha will draw not selected items with halfe the
// intensity instaed of solid "white" value
//
// Uncomment next line to use Dark Theme
// bottomBarPage.BarTheme = BottomBarPage.BarThemeTypes.DarkWithAlpha;
string[] tabTitles = { "Favorites", "Friends", "Nearby", "Recents", "Restaurants" };
string [] tabColors = { null, "#5D4037", "#7B1FA2", "#FF5252", "#FF9800" };
int[] tabBadgeCounts = {0, 1, 5, 3, 4};
string[] tabBadgeColors = {"#000000", "#FF0000", "#000000", "#000000", "#000000"};
for (int i = 0; i < tabTitles.Length; ++i) {
string title = tabTitles [i];
string tabColor = tabColors [i];
int tabBadgeCount = tabBadgeCounts[i];
string tabBadgeColor = tabBadgeColors[i];
FileImageSource icon = (FileImageSource) FileImageSource.FromFile (string.Format ("ic_{0}.png", title.ToLowerInvariant ()));
// create tab page
var tabPage = new TabPage () {
Title = title,
Icon = icon
};
// set tab color
if (tabColor != null) {
BottomBarPageExtensions.SetTabColor(tabPage, Color.FromHex(tabColor));
}
// Set badges
BottomBarPageExtensions.SetBadgeCount(tabPage, tabBadgeCount);
BottomBarPageExtensions.SetBadgeColor(tabPage, Color.FromHex(tabBadgeColor));
// set label based on title
tabPage.UpdateLabel ();
// add tab pag to tab control
bottomBarPage.Children.Add (tabPage);
}
MainPage = bottomBarPage;
}
protected override void OnStart ()
{
// Handle when your app starts
}
protected override void OnSleep ()
{
// Handle when your app sleeps
}
protected override void OnResume ()
{
// Handle when your app resumes
}
}
}
================================================
FILE: example/BottomBarXFExample/BottomBarXFExample.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}</ProjectGuid>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<RootNamespace>BottomBarXFExample</RootNamespace>
<AssemblyName>BottomBarXFExample</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile78</TargetFrameworkProfile>
<ReleaseVersion>0.8</ReleaseVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG; ANDROID</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Include="App.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Include="TabPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TabPage.xaml.cs">
<DependentUpon>TabPage.xaml</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BottomBar.XamarinForms\BottomBar.XamarinForms.csproj">
<Project>{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}</Project>
<Name>BottomBar.XamarinForms</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Reference Include="Xamarin.Forms.Core">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
</Project>
================================================
FILE: example/BottomBarXFExample/Properties/AssemblyInfo.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle ("BottomBarXFExample")]
[assembly: AssemblyDescription ("Bottom Bar for Xamarin Forms - Example Xamarin Forms project")]
[assembly: AssemblyConfiguration ("")]
[assembly: AssemblyCompany ("")]
[assembly: AssemblyProduct ("")]
[assembly: AssemblyCopyright ("sebs")]
[assembly: AssemblyTrademark ("")]
[assembly: AssemblyCulture ("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion ("1.0.*")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]
================================================
FILE: example/BottomBarXFExample/TabPage.xaml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BottomBarXFExample.TabPage"
BackgroundColor="White">
<ContentPage.Content>
<Grid>
<Frame Margin="20" OutlineColor="Red" BackgroundColor="Silver">
<Label x:Name="Label" Text="This is a Xamarin Forms page {0} defined in Xamarin Forms project" />
</Frame>
</Grid>
</ContentPage.Content>
</ContentPage>
================================================
FILE: example/BottomBarXFExample/TabPage.xaml.cs
================================================
using System;
using System.Collections.Generic;
using Xamarin.Forms;
namespace BottomBarXFExample
{
public partial class TabPage : ContentPage
{
public TabPage ()
{
InitializeComponent ();
}
public void UpdateLabel ()
{
Label.Text = string.Format (Label.Text, Title);
}
}
}
================================================
FILE: example/BottomBarXFExample/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Xamarin.Forms" version="2.3.2.127" targetFramework="portable45-net45+win8+wp8" />
</packages>
================================================
FILE: example/BottomBarXFExample.Droid/Assets/AboutAssets.txt
================================================
Any raw assets you want to be deployed with your application can be placed in
this directory (and child directories) and given a Build Action of "AndroidAsset".
These files will be deployed with your package and will be accessible using Android's
AssetManager, like this:
public class ReadAsset : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
InputStream input = Assets.Open ("my_asset.txt");
}
}
Additionally, some Android functions will automatically load asset files:
Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
================================================
FILE: example/BottomBarXFExample.Droid/BottomBarXFExample.Droid.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AndroidSdkBuildToolsVersion>23.0.3</AndroidSdkBuildToolsVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{03FE6BCA-AA3B-4689-A829-DB87D51A149E}</ProjectGuid>
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<RootNamespace>BottomBarXFExample.Droid</RootNamespace>
<AssemblyName>BottomBarXFExample.Droid</AssemblyName>
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion>
<AndroidApplication>True</AndroidApplication>
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<AndroidResgenClass>Resource</AndroidResgenClass>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
<AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk>
<ReleaseVersion>0.8</ReleaseVersion>
<AndroidLinkMode>None</AndroidLinkMode>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
<AndroidSupportedAbis>armeabi-v7a;x86;armeabi;arm64-v8a;x86_64</AndroidSupportedAbis>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="Mono.Android" />
<Reference Include="Xamarin.Android.Support.v4">
<HintPath>..\..\packages\Xamarin.Android.Support.v4.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Vector.Drawable">
<HintPath>..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Vector.Drawable.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Animated.Vector.Drawable">
<HintPath>..\..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Animated.Vector.Drawable.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.AppCompat">
<HintPath>..\..\packages\Xamarin.Android.Support.v7.AppCompat.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.RecyclerView">
<HintPath>..\..\packages\Xamarin.Android.Support.v7.RecyclerView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.RecyclerView.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Design">
<HintPath>..\..\packages\Xamarin.Android.Support.Design.23.3.0\lib\MonoAndroid43\Xamarin.Android.Support.Design.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.CardView">
<HintPath>..\..\packages\Xamarin.Android.Support.v7.CardView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.CardView.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.MediaRouter">
<HintPath>..\..\packages\Xamarin.Android.Support.v7.MediaRouter.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.MediaRouter.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="BottomNavigationBar">
<HintPath>..\..\packages\BottomNavigationBar.1.4.0.2\lib\MonoAndroid403\BottomNavigationBar.dll</HintPath>
</Reference>
<Reference Include="FormsViewGroup">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\FormsViewGroup.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Core">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.Android">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BottomBarXFExample\BottomBarXFExample.csproj">
<Project>{821A7B88-A9CD-4CCA-B32B-CEE8DCF49738}</Project>
<Name>BottomBarXFExample</Name>
</ProjectReference>
<ProjectReference Include="..\..\BottomBar.Droid\BottomBar.Droid.csproj">
<Project>{96746A3E-074D-40C6-B2E2-CA90313012C6}</Project>
<Name>BottomBar.Droid</Name>
</ProjectReference>
<ProjectReference Include="..\..\BottomBar.XamarinForms\BottomBar.XamarinForms.csproj">
<Project>{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}</Project>
<Name>BottomBar.XamarinForms</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Compile Include="MainActivity.cs" />
<Compile Include="Resources\Resource.designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\AboutResources.txt" />
<None Include="Properties\AndroidManifest.xml" />
<None Include="Assets\AboutAssets.txt" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\layout\Tabbar.axml" />
<AndroidResource Include="Resources\layout\Toolbar.axml" />
<AndroidResource Include="Resources\values\styles.xml" />
<AndroidResource Include="Resources\drawable\icon.png" />
<AndroidResource Include="Resources\drawable-hdpi\icon.png" />
<AndroidResource Include="Resources\drawable-xhdpi\icon.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\icon.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_favorites.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_friends.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_nearby.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_recents.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_restaurants.png" />
<AndroidResource Include="Resources\drawable-xhdpi\ic_favorites.png" />
<AndroidResource Include="Resources\drawable-xhdpi\ic_friends.png" />
<AndroidResource Include="Resources\drawable-xhdpi\ic_nearby.png" />
<AndroidResource Include="Resources\drawable-xhdpi\ic_recents.png" />
<AndroidResource Include="Resources\drawable-xhdpi\ic_restaurants.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\ic_favorites.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\ic_friends.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\ic_nearby.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\ic_recents.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\ic_restaurants.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\ic_favorites.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\ic_friends.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\ic_nearby.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\ic_recents.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\ic_restaurants.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\Icon.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_favorites.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_friends.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_nearby.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_recents.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_restaurants.png" />
<AndroidResource Include="Resources\drawable-mdpi\Icon.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\values\colors.xml" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<Import Project="..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets" Condition="Exists('..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets')" />
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
</Project>
================================================
FILE: example/BottomBarXFExample.Droid/MainActivity.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using Android.App;
using Android.Content;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
namespace BottomBarXFExample.Droid
{
[Activity (Label = "BottomBarXFExample.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate (Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate (bundle);
global::Xamarin.Forms.Forms.Init (this, bundle);
LoadApplication (new App ());
}
}
}
================================================
FILE: example/BottomBarXFExample.Droid/Properties/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.test.bottombarxf" android:installLocation="auto">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="25" />
<application android:label="BottomBarXFExample"></application>
</manifest>
================================================
FILE: example/BottomBarXFExample.Droid/Properties/AssemblyInfo.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System.Reflection;
using System.Runtime.CompilerServices;
using Android.App;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle ("BottomBarXFExample.Droid")]
[assembly: AssemblyDescription ("Bottom Bar for Xamarin Forms - Example Android App")]
[assembly: AssemblyConfiguration ("")]
[assembly: AssemblyCompany ("")]
[assembly: AssemblyProduct ("")]
[assembly: AssemblyCopyright ("sebs")]
[assembly: AssemblyTrademark ("")]
[assembly: AssemblyCulture ("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion ("1.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]
================================================
FILE: example/BottomBarXFExample.Droid/Resources/AboutResources.txt
================================================
Images, layout descriptions, binary blobs and string dictionaries can be included
in your application as resource files. Various Android APIs are designed to
operate on the resource IDs instead of dealing with images, strings or binary blobs
directly.
For example, a sample Android app that contains a user interface layout (main.axml),
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
would keep its resources in the "Resources" directory of the application:
Resources/
drawable/
icon.png
layout/
main.axml
values/
strings.xml
In order to get the build system to recognize Android resources, set the build action to
"AndroidResource". The native Android APIs do not operate directly with filenames, but
instead operate on resource IDs. When you compile an Android application that uses resources,
the build system will package the resources for distribution and generate a class called "R"
(this is an Android convention) that contains the tokens for each one of the resources
included. For example, for the above Resources layout, this is what the R class would expose:
public class R {
public class drawable {
public const int icon = 0x123;
}
public class layout {
public const int main = 0x456;
}
public class strings {
public const int first_string = 0xabc;
public const int second_string = 0xbcd;
}
}
You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
to reference the layout/main.axml file, or R.strings.first_string to reference the first
string in the dictionary file values/strings.xml.
================================================
FILE: example/BottomBarXFExample.Droid/Resources/layout/Tabbar.axml
================================================
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:tabIndicatorColor="@android:color/white"
app:tabGravity="fill"
app:tabMode="fixed" />
================================================
FILE: example/BottomBarXFExample.Droid/Resources/layout/Toolbar.axml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
================================================
FILE: example/BottomBarXFExample.Droid/Resources/values/colors.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#ffffff</color>
<color name="bb_darkBackgroundColor">#000000</color>
</resources>
================================================
FILE: example/BottomBarXFExample.Droid/Resources/values/styles.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style
name="MyTheme"
parent="MyTheme.Base">
</style>
<!-- Base theme applied no matter what API -->
<style
name="MyTheme.Base"
parent="Theme.AppCompat.Light.DarkActionBar">
<!--If you are using revision 22.1 please use just windowNoTitle. Without android:-->
<item
name="windowNoTitle">true</item>
<!--We will be using the toolbar so no need to show ActionBar-->
<item
name="windowActionBar">false</item>
<!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette-->
<!-- colorPrimary is used for the default action bar background -->
<item
name="colorPrimary">#2196F3</item>
<!-- colorPrimaryDark is used for the status bar -->
<item
name="colorPrimaryDark">#1976D2</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<item
name="colorAccent">#FF4081</item>
<!-- You can also set colorControlNormal, colorControlActivated
colorControlHighlight and colorSwitchThumbNormal. -->
<item
name="windowActionModeOverlay">true</item>
<item
name="android:datePickerDialogTheme">@style/AppCompatDialogStyle</item>
</style>
<style
name="AppCompatDialogStyle"
parent="Theme.AppCompat.Light.Dialog">
<item
name="colorAccent">#FF4081</item>
</style>
</resources>
================================================
FILE: example/BottomBarXFExample.Droid/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BottomNavigationBar" version="1.4.0.2" targetFramework="monoandroid70" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Forms" version="2.3.2.127" targetFramework="monoandroid70" />
</packages>
================================================
FILE: example/BottomBarXFExample.iOS/AppDelegate.cs
================================================
using Foundation;
using UIKit;
namespace BottomBarXFExample.iOS
{
// The UIApplicationDelegate for the application. This class is responsible for launching the
// User Interface of the application, as well as listening (and optionally responding) to application events from iOS.
[Register("AppDelegate")]
public class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
// class-level declarations
public override UIWindow Window
{
get;
set;
}
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
global::Xamarin.Forms.Forms.Init();
UINavigationBar.Appearance.BarTintColor = UIColor.White;
UINavigationBar.Appearance.TitleTextAttributes = new UIStringAttributes() { ForegroundColor = UIColor.Black };
var app = new App();
LoadApplication(app);
return base.FinishedLaunching(application, launchOptions);
}
public override void OnResignActivation(UIApplication application)
{
// Invoked when the application is about to move from active to inactive state.
// This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message)
// or when the user quits the application and it begins the transition to the background state.
// Games should use this method to pause the game.
}
public override void DidEnterBackground(UIApplication application)
{
// Use this method to release shared resources, save user data, invalidate timers and store the application state.
// If your application supports background exection this method is called instead of WillTerminate when the user quits.
}
public override void WillEnterForeground(UIApplication application)
{
// Called as part of the transiton from background to active state.
// Here you can undo many of the changes made on entering the background.
}
public override void OnActivated(UIApplication application)
{
// Restart any tasks that were paused (or not yet started) while the application was inactive.
// If the application was previously in the background, optionally refresh the user interface.
}
public override void WillTerminate(UIApplication application)
{
// Called when the application is about to terminate. Save data, if needed. See also DidEnterBackground.
}
}
}
================================================
FILE: example/BottomBarXFExample.iOS/BottomBarXFExample.iOS.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
<ProjectGuid>{7AB8FBA6-4F0B-409F-B891-104BA3554470}</ProjectGuid>
<ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Exe</OutputType>
<RootNamespace>BottomBarXFExample.iOS</RootNamespace>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>BottomBarXFExample.iOS</AssemblyName>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>x86_64</MtouchArch>
<MtouchLink>None</MtouchLink>
<MtouchDebug>true</MtouchDebug>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhoneSimulator\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchLink>None</MtouchLink>
<MtouchArch>x86_64</MtouchArch>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhone\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignKey>iPhone Developer</CodesignKey>
<MtouchDebug>true</MtouchDebug>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhone\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<ConsolePause>false</ConsolePause>
<CodesignKey>iPhone Developer</CodesignKey>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\Ad-Hoc</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<BuildIpa>True</BuildIpa>
<CodesignProvision>Automatic:AdHoc</CodesignProvision>
<CodesignKey>iPhone Distribution</CodesignKey>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\AppStore</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignProvision>Automatic:AppStore</CodesignProvision>
<CodesignKey>iPhone Distribution</CodesignKey>
</PropertyGroup>
<ItemGroup>
<Compile Include="Main.cs" />
<Compile Include="AppDelegate.cs" />
<None Include="Info.plist" />
<Compile Include="Properties\AssemblyInfo.cs" />
<InterfaceDefinition Include="Resources\LaunchScreen.xib">
<SubType>Designer</SubType>
</InterfaceDefinition>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="Xamarin.Forms.Core, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xamarin.Forms.Platform, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xamarin.Forms.Platform.iOS, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xamarin.Forms.Xaml, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Xamarin.Forms.2.3.2.127\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xamarin.iOS" />
</ItemGroup>
<ItemGroup>
<Content Include="Entitlements.plist" />
<BundleResource Include="Resources\icon.png" />
<BundleResource Include="Resources\ic_favorites.png" />
<BundleResource Include="Resources\ic_friends.png" />
<BundleResource Include="Resources\ic_nearby.png" />
<BundleResource Include="Resources\ic_recents.png" />
<BundleResource Include="Resources\ic_restaurants.png" />
<BundleResource Include="Resources\ic_nearby%402x.png" />
<BundleResource Include="Resources\ic_recents%402x.png" />
<BundleResource Include="Resources\ic_restaurants%402x.png" />
<BundleResource Include="Resources\icon%402x.png" />
<BundleResource Include="Resources\ic_favorites%402x.png" />
<BundleResource Include="Resources\ic_friends%402x.png" />
<BundleResource Include="Resources\ic_nearby%403x.png" />
<BundleResource Include="Resources\ic_recents%403x.png" />
<BundleResource Include="Resources\ic_restaurants%403x.png" />
<BundleResource Include="Resources\icon%403x.png" />
<BundleResource Include="Resources\ic_favorites%403x.png" />
<BundleResource Include="Resources\ic_friends%403x.png" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BottomBar.XamarinForms\BottomBar.XamarinForms.csproj">
<Project>{bb1d801d-5ec3-471d-b9ea-98c48d785baa}</Project>
<Name>BottomBar.XamarinForms</Name>
</ProjectReference>
<ProjectReference Include="..\BottomBarXFExample\BottomBarXFExample.csproj">
<Project>{821a7b88-a9cd-4cca-b32b-cee8dcf49738}</Project>
<Name>BottomBarXFExample</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<Import Project="..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets'))" />
</Target>
</Project>
================================================
FILE: example/BottomBarXFExample.iOS/Entitlements.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
</dict>
</plist>
================================================
FILE: example/BottomBarXFExample.iOS/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>BottomBarXFExample.iOS</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MinimumOSVersion</key>
<string></string>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
</array>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UILaunchStoryboardName</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.pocheshire.BottomBarXFExample.iOS</string>
</dict>
</plist>
================================================
FILE: example/BottomBarXFExample.iOS/Main.cs
================================================
using UIKit;
namespace BottomBarXFExample.iOS
{
public class Application
{
// This is the main entry point of the application.
static void Main(string[] args)
{
// if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here.
UIApplication.Main(args, null, "AppDelegate");
}
}
}
================================================
FILE: example/BottomBarXFExample.iOS/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("BottomBarXFExample.iOS")]
[assembly: AssemblyDescription("Bottom Bar for Xamarin Forms - Example iOS App")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BottomBarXFExample.iOS")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("7ab8fba6-4f0b-409f-b891-104ba3554470")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: example/BottomBarXFExample.iOS/Resources/LaunchScreen.xib
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6214" systemVersion="14A314h" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6207" />
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1" />
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" />
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder" />
<view contentMode="scaleToFill" id="iN0-l3-epB">
<rect key="frame" x="0.0" y="0.0" width="480" height="480" />
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" />
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Copyright (c) 2017 APFM" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines"
minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
<rect key="frame" x="20" y="439" width="441" height="21" />
<fontDescription key="fontDescription" type="system" pointSize="17" />
<color key="textColor" cocoaTouchSystemColor="darkTextColor" />
<nil key="highlightedColor" />
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BottomBarXFExample.iOS" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines"
minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
<rect key="frame" x="20" y="140" width="441" height="43" />
<fontDescription key="fontDescription" type="boldSystem" pointSize="36" />
<color key="textColor" cocoaTouchSystemColor="darkTextColor" />
<nil key="highlightedColor" />
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite" />
<constraints>
<constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC" />
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk" />
<constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l" />
<constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0" />
<constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9" />
<constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g" />
</constraints>
<nil key="simulatedStatusBarMetrics" />
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics" />
<point key="canvasLocation" x="548" y="455" />
</view>
</objects>
</document>
================================================
FILE: example/BottomBarXFExample.iOS/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Xamarin.Forms" version="2.3.2.127" targetFramework="xamarinios10" />
</packages>
================================================
FILE: example-xaml/BottomBarXFExampleXaml/App.xaml
================================================
<?xml version="1.0" encoding="utf-8"?>
<Application
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BottomBarXFExampleXaml.App">
<Application.Resources>
</Application.Resources>
</Application>
================================================
FILE: example-xaml/BottomBarXFExampleXaml/App.xaml.cs
================================================
using Xamarin.Forms;
namespace BottomBarXFExampleXaml
{
public partial class App : Application
{
public App ()
{
InitializeComponent ();
MainPage = new BarPage();
}
protected override void OnStart ()
{
// Handle when your app starts
}
protected override void OnSleep ()
{
// Handle when your app sleeps
}
protected override void OnResume ()
{
// Handle when your app resumes
}
}
}
================================================
FILE: example-xaml/BottomBarXFExampleXaml/BarPage.xaml
================================================
<?xml version="1.0" encoding="utf-8" ?>
<xf:BottomBarPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xf="clr-namespace:BottomBar.XamarinForms;assembly=BottomBar.XamarinForms"
xmlns:example="clr-namespace:BottomBarXFExampleXaml;assembly=BottomBarXFExampleXaml"
x:Class="BottomBarXFExampleXaml.BarPage">
<example:TabPage Title="Favorites" Icon="ic_favorites.png" />
<example:TabPage Title="Friends" Icon="ic_friends.png" xf:BottomBarPageExtensions.TabColor="#5D4037" />
<example:TabPage Title="Nearby" Icon="ic_nearby.png" xf:BottomBarPageExtensions.TabColor="#7B1FA2" />
<example:TabPage Title="Recents" Icon="ic_recents.png" xf:BottomBarPageExtensions.TabColor="#FF5252"
xf:BottomBarPageExtensions.BadgeCount="2" xf:BottomBarPageExtensions.BadgeColor="Black"/>
<example:TabPage Title="Restaurants" Icon="ic_restaurants.png" xf:BottomBarPageExtensions.TabColor="#FF9800" />
</xf:BottomBarPage>
================================================
FILE: example-xaml/BottomBarXFExampleXaml/BarPage.xaml.cs
================================================
namespace BottomBarXFExampleXaml
{
public partial class BarPage
{
public BarPage()
{
InitializeComponent();
}
}
}
================================================
FILE: example-xaml/BottomBarXFExampleXaml/BottomBarXFExampleXaml.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D72B487F-AA32-45B3-92B1-C36BC5659CBF}</ProjectGuid>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<RootNamespace>BottomBarXFExampleXaml</RootNamespace>
<AssemblyName>BottomBarXFExampleXaml</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile78</TargetFrameworkProfile>
<ReleaseVersion>0.8</ReleaseVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG; ANDROID</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Include="App.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Include="TabPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="BarPage.xaml.cs">
<DependentUpon>BarPage.xaml</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TabPage.xaml.cs">
<DependentUpon>TabPage.xaml</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BottomBar.XamarinForms\BottomBar.XamarinForms.csproj">
<Project>{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}</Project>
<Name>BottomBar.XamarinForms</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Reference Include="Xamarin.Forms.Core">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="BarPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
</Project>
================================================
FILE: example-xaml/BottomBarXFExampleXaml/Properties/AssemblyInfo.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle ("BottomBarXFExampleXaml")]
[assembly: AssemblyDescription ("Bottom Bar for Xamarin Forms - Example Xamarin Forms project")]
[assembly: AssemblyConfiguration ("")]
[assembly: AssemblyCompany ("")]
[assembly: AssemblyProduct ("")]
[assembly: AssemblyCopyright ("sebs")]
[assembly: AssemblyTrademark ("")]
[assembly: AssemblyCulture ("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion ("1.0.*")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]
================================================
FILE: example-xaml/BottomBarXFExampleXaml/TabPage.xaml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BottomBarXFExampleXaml.TabPage"
BackgroundColor="White">
<ContentPage.Content>
<Grid>
<Frame Margin="20" OutlineColor="Red" BackgroundColor="Silver">
<Label x:Name="Label" Text="This is a Xamarin Forms page {0} defined in Xamarin Forms project" />
</Frame>
</Grid>
</ContentPage.Content>
</ContentPage>
================================================
FILE: example-xaml/BottomBarXFExampleXaml/TabPage.xaml.cs
================================================
namespace BottomBarXFExampleXaml
{
public partial class TabPage
{
public TabPage ()
{
InitializeComponent ();
this.Appearing += (sender, e) => Label.Text = string.Format(Label.Text, Title);
}
}
}
================================================
FILE: example-xaml/BottomBarXFExampleXaml/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Xamarin.Forms" version="2.3.2.127" targetFramework="portable45-net45+win8+wp8" />
</packages>
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/Assets/AboutAssets.txt
================================================
Any raw assets you want to be deployed with your application can be placed in
this directory (and child directories) and given a Build Action of "AndroidAsset".
These files will be deployed with your package and will be accessible using Android's
AssetManager, like this:
public class ReadAsset : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
InputStream input = Assets.Open ("my_asset.txt");
}
}
Additionally, some Android functions will automatically load asset files:
Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/BottomBarXFExampleXaml.Droid.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AndroidSdkBuildToolsVersion>23.0.3</AndroidSdkBuildToolsVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C5BC9521-E9B9-44E3-A505-256080B78234}</ProjectGuid>
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<RootNamespace>BottomBarXFExampleXaml.Droid</RootNamespace>
<AssemblyName>BottomBarXFExampleXaml.Droid</AssemblyName>
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion>
<AndroidApplication>True</AndroidApplication>
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<AndroidResgenClass>Resource</AndroidResgenClass>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
<AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk>
<ReleaseVersion>0.8</ReleaseVersion>
<AndroidLinkMode>None</AndroidLinkMode>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
<AndroidSupportedAbis>armeabi-v7a;x86;armeabi;arm64-v8a;x86_64</AndroidSupportedAbis>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="Mono.Android" />
<Reference Include="Xamarin.Android.Support.v4">
<HintPath>..\..\packages\Xamarin.Android.Support.v4.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Vector.Drawable">
<HintPath>..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Vector.Drawable.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Animated.Vector.Drawable">
<HintPath>..\..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Animated.Vector.Drawable.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.AppCompat">
<HintPath>..\..\packages\Xamarin.Android.Support.v7.AppCompat.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.RecyclerView">
<HintPath>..\..\packages\Xamarin.Android.Support.v7.RecyclerView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.RecyclerView.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Design">
<HintPath>..\..\packages\Xamarin.Android.Support.Design.23.3.0\lib\MonoAndroid43\Xamarin.Android.Support.Design.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.CardView">
<HintPath>..\..\packages\Xamarin.Android.Support.v7.CardView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.CardView.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.MediaRouter">
<HintPath>..\..\packages\Xamarin.Android.Support.v7.MediaRouter.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.MediaRouter.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="BottomNavigationBar">
<HintPath>..\..\packages\BottomNavigationBar.1.4.0.2\lib\MonoAndroid403\BottomNavigationBar.dll</HintPath>
</Reference>
<Reference Include="FormsViewGroup">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\FormsViewGroup.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Core">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.Android">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>..\..\packages\Xamarin.Forms.2.3.2.127\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BottomBar.Droid\BottomBar.Droid.csproj">
<Project>{96746A3E-074D-40C6-B2E2-CA90313012C6}</Project>
<Name>BottomBar.Droid</Name>
</ProjectReference>
<ProjectReference Include="..\..\BottomBar.XamarinForms\BottomBar.XamarinForms.csproj">
<Project>{BB1D801D-5EC3-471D-B9EA-98C48D785BAA}</Project>
<Name>BottomBar.XamarinForms</Name>
</ProjectReference>
<ProjectReference Include="..\BottomBarXFExampleXaml\BottomBarXFExampleXaml.csproj">
<Project>{d72b487f-aa32-45b3-92b1-c36bc5659cbf}</Project>
<Name>BottomBarXFExampleXaml</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Compile Include="MainActivity.cs" />
<Compile Include="Resources\Resource.designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\AboutResources.txt" />
<None Include="Properties\AndroidManifest.xml" />
<None Include="Assets\AboutAssets.txt" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\layout\Tabbar.axml" />
<AndroidResource Include="Resources\layout\Toolbar.axml" />
<AndroidResource Include="Resources\values\styles.xml" />
<AndroidResource Include="Resources\drawable\icon.png" />
<AndroidResource Include="Resources\drawable-hdpi\icon.png" />
<AndroidResource Include="Resources\drawable-xhdpi\icon.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\icon.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_favorites.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_friends.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_nearby.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_recents.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_restaurants.png" />
<AndroidResource Include="Resources\drawable-xhdpi\ic_favorites.png" />
<AndroidResource Include="Resources\drawable-xhdpi\ic_friends.png" />
<AndroidResource Include="Resources\drawable-xhdpi\ic_nearby.png" />
<AndroidResource Include="Resources\drawable-xhdpi\ic_recents.png" />
<AndroidResource Include="Resources\drawable-xhdpi\ic_restaurants.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\ic_favorites.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\ic_friends.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\ic_nearby.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\ic_recents.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\ic_restaurants.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\ic_favorites.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\ic_friends.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\ic_nearby.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\ic_recents.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\ic_restaurants.png" />
<AndroidResource Include="Resources\drawable-xxxhdpi\Icon.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_favorites.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_friends.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_nearby.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_recents.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_restaurants.png" />
<AndroidResource Include="Resources\drawable-mdpi\Icon.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\values\colors.xml" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<Import Project="..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets" Condition="Exists('..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets')" />
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
</Project>
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/MainActivity.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using Android.App;
using Android.Content;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
namespace BottomBarXFExampleXaml.Droid
{
[Activity (Label = "BottomBarXFExampleXaml.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate (Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate (bundle);
global::Xamarin.Forms.Forms.Init (this, bundle);
LoadApplication (new App ());
}
}
}
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/Properties/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.test.bottombarxf">
<uses-sdk android:minSdkVersion="16" />
<application android:label="BottomBarXFExampleXaml"></application>
</manifest>
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/Properties/AssemblyInfo.cs
================================================
/*
* BottomNavigationBar for Xamarin Forms
* Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System.Reflection;
using System.Runtime.CompilerServices;
using Android.App;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle ("BottomBarXFExampleXaml.Droid")]
[assembly: AssemblyDescription ("Bottom Bar for Xamarin Forms - Example Android App")]
[assembly: AssemblyConfiguration ("")]
[assembly: AssemblyCompany ("")]
[assembly: AssemblyProduct ("")]
[assembly: AssemblyCopyright ("sebs")]
[assembly: AssemblyTrademark ("")]
[assembly: AssemblyCulture ("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion ("1.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/Resources/AboutResources.txt
================================================
Images, layout descriptions, binary blobs and string dictionaries can be included
in your application as resource files. Various Android APIs are designed to
operate on the resource IDs instead of dealing with images, strings or binary blobs
directly.
For example, a sample Android app that contains a user interface layout (main.axml),
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
would keep its resources in the "Resources" directory of the application:
Resources/
drawable/
icon.png
layout/
main.axml
values/
strings.xml
In order to get the build system to recognize Android resources, set the build action to
"AndroidResource". The native Android APIs do not operate directly with filenames, but
instead operate on resource IDs. When you compile an Android application that uses resources,
the build system will package the resources for distribution and generate a class called "R"
(this is an Android convention) that contains the tokens for each one of the resources
included. For example, for the above Resources layout, this is what the R class would expose:
public class R {
public class drawable {
public const int icon = 0x123;
}
public class layout {
public const int main = 0x456;
}
public class strings {
public const int first_string = 0xabc;
public const int second_string = 0xbcd;
}
}
You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
to reference the layout/main.axml file, or R.strings.first_string to reference the first
string in the dictionary file values/strings.xml.
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/Resources/layout/Tabbar.axml
================================================
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:tabIndicatorColor="@android:color/white"
app:tabGravity="fill"
app:tabMode="fixed" />
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/Resources/layout/Toolbar.axml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/Resources/values/colors.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#ffffff</color>
<color name="bb_darkBackgroundColor">#000000</color>
</resources>
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/Resources/values/styles.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style
name="MyTheme"
parent="MyTheme.Base">
</style>
<!-- Base theme applied no matter what API -->
<style
name="MyTheme.Base"
parent="Theme.AppCompat.Light.DarkActionBar">
<!--If you are using revision 22.1 please use just windowNoTitle. Without android:-->
<item
name="windowNoTitle">true</item>
<!--We will be using the toolbar so no need to show ActionBar-->
<item
name="windowActionBar">false</item>
<!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette-->
<!-- colorPrimary is used for the default action bar background -->
<item
name="colorPrimary">#2196F3</item>
<!-- colorPrimaryDark is used for the status bar -->
<item
name="colorPrimaryDark">#1976D2</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<item
name="colorAccent">#FF4081</item>
<!-- You can also set colorControlNormal, colorControlActivated
colorControlHighlight and colorSwitchThumbNormal. -->
<item
name="windowActionModeOverlay">true</item>
<item
name="android:datePickerDialogTheme">@style/AppCompatDialogStyle</item>
</style>
<style
name="AppCompatDialogStyle"
parent="Theme.AppCompat.Light.Dialog">
<item
name="colorAccent">#FF4081</item>
</style>
</resources>
================================================
FILE: example-xaml/BottomBarXFExampleXaml.Droid/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BottomNavigationBar" version="1.4.0.2" targetFramework="monoandroid70" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="23.3.0" targetFramework="MonoAndroid60" />
<package id="Xamarin.Forms" version="2.3.2.127" targetFramework="monoandroid70" />
</packages>
gitextract_5bvqld56/
├── .gitignore
├── BottomBar.Droid/
│ ├── BottomBar.Droid.csproj
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Renderers/
│ │ └── BottomBarPageRenderer.cs
│ ├── Resources/
│ │ ├── AboutResources.txt
│ │ └── values/
│ │ └── Strings.xml
│ ├── Utils/
│ │ ├── IPageController.cs
│ │ ├── MeasureSpecFactory.cs
│ │ ├── PageController.cs
│ │ ├── ReflectedProxy.cs
│ │ └── ResourceManagerEx.cs
│ └── packages.config
├── BottomBar.XamarinForms/
│ ├── BottomBar.XamarinForms.csproj
│ ├── BottomBarPage.cs
│ ├── BottomBarPageExtensions.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── packages.config
├── BottomBar.nuspec
├── BottomBarXF.sln
├── LICENSE
├── README.md
├── example/
│ ├── BottomBarXFExample/
│ │ ├── App.xaml
│ │ ├── App.xaml.cs
│ │ ├── BottomBarXFExample.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── TabPage.xaml
│ │ ├── TabPage.xaml.cs
│ │ └── packages.config
│ ├── BottomBarXFExample.Droid/
│ │ ├── Assets/
│ │ │ └── AboutAssets.txt
│ │ ├── BottomBarXFExample.Droid.csproj
│ │ ├── MainActivity.cs
│ │ ├── Properties/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── AssemblyInfo.cs
│ │ ├── Resources/
│ │ │ ├── AboutResources.txt
│ │ │ ├── layout/
│ │ │ │ ├── Tabbar.axml
│ │ │ │ └── Toolbar.axml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ └── packages.config
│ └── BottomBarXFExample.iOS/
│ ├── AppDelegate.cs
│ ├── BottomBarXFExample.iOS.csproj
│ ├── Entitlements.plist
│ ├── Info.plist
│ ├── Main.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Resources/
│ │ └── LaunchScreen.xib
│ └── packages.config
└── example-xaml/
├── BottomBarXFExampleXaml/
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── BarPage.xaml
│ ├── BarPage.xaml.cs
│ ├── BottomBarXFExampleXaml.csproj
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── TabPage.xaml
│ ├── TabPage.xaml.cs
│ └── packages.config
└── BottomBarXFExampleXaml.Droid/
├── Assets/
│ └── AboutAssets.txt
├── BottomBarXFExampleXaml.Droid.csproj
├── MainActivity.cs
├── Properties/
│ ├── AndroidManifest.xml
│ └── AssemblyInfo.cs
├── Resources/
│ ├── AboutResources.txt
│ ├── layout/
│ │ ├── Tabbar.axml
│ │ └── Toolbar.axml
│ └── values/
│ ├── colors.xml
│ └── styles.xml
└── packages.config
SYMBOL INDEX (81 symbols across 17 files)
FILE: BottomBar.Droid/Renderers/BottomBarPageRenderer.cs
class BottomBarPageRenderer (line 39) | public class BottomBarPageRenderer : VisualElementRenderer<BottomBarPage...
method BottomBarPageRenderer (line 47) | public BottomBarPageRenderer ()
method OnTabSelected (line 53) | public virtual void OnTabSelected (int position)
method OnTabReSelected (line 62) | public virtual void OnTabReSelected (int position)
method Dispose (line 67) | protected override void Dispose (bool disposing)
method OnAttachedToWindow (line 111) | protected override void OnAttachedToWindow ()
method OnDetachedFromWindow (line 117) | protected override void OnDetachedFromWindow ()
method OnElementChanged (line 124) | protected override void OnElementChanged (ElementChangedEventArgs<Bott...
method OnElementPropertyChanged (line 175) | protected override void OnElementPropertyChanged (object sender, Prope...
method SwitchContent (line 189) | protected virtual void SwitchContent (Page view)
method OnLayout (line 206) | protected override void OnLayout (bool changed, int l, int t, int r, i...
method UpdateSelectedTabIndex (line 241) | void UpdateSelectedTabIndex(Page page)
method UpdateBarBackgroundColor (line 247) | void UpdateBarBackgroundColor ()
method UpdateBarTextColor (line 256) | void UpdateBarTextColor ()
method UpdateTabs (line 266) | void UpdateTabs ()
method SetTabItems (line 279) | void SetTabItems ()
method SetTabColors (line 292) | void SetTabColors ()
method SetTabBadges (line 306) | void SetTabBadges()
method AddPropertyChangedHandlersForPages (line 318) | void AddPropertyChangedHandlersForPages()
method OnPagePropertyChanged (line 326) | void OnPagePropertyChanged(object sender, PropertyChangedEventArgs e)
method CreateOrUpdateBadgeForPage (line 340) | void CreateOrUpdateBadgeForPage(Page page)
FILE: BottomBar.Droid/Utils/IPageController.cs
type IPageController (line 23) | public interface IPageController
method SendAppearing (line 31) | void SendAppearing ();
method SendDisappearing (line 33) | void SendDisappearing ();
FILE: BottomBar.Droid/Utils/MeasureSpecFactory.cs
class MeasureSpecFactory (line 22) | internal static class MeasureSpecFactory
method GetSize (line 24) | public static int GetSize (int measureSpec)
method MakeMeasureSpec (line 32) | public static int MakeMeasureSpec (int size, MeasureSpecMode mode)
FILE: BottomBar.Droid/Utils/PageController.cs
class PageController (line 23) | public class PageController : IPageController
method Create (line 27) | public static IPageController Create (Page page)
method PageController (line 32) | PageController (Page page)
method SendAppearing (line 67) | public void SendAppearing ()
method SendDisappearing (line 72) | public void SendDisappearing ()
FILE: BottomBar.Droid/Utils/ReflectedProxy.cs
class ReflectedProxy (line 25) | public class ReflectedProxy<T> where T : class
method ReflectedProxy (line 35) | public ReflectedProxy(T target)
method SetPropertyValue (line 47) | public void SetPropertyValue(object value, [CallerMemberName] string p...
method GetPropertyValue (line 52) | public TPropertyValue GetPropertyValue<TPropertyValue>([CallerMemberNa...
method Call (line 57) | public object Call([CallerMemberName] string methodName = "", object[]...
method GetPropertyInfo (line 68) | PropertyInfo GetPropertyInfo(string propertyName)
FILE: BottomBar.Droid/Utils/ResourceManagerEx.cs
class ResourceManagerEx (line 24) | internal static class ResourceManagerEx
method IdFromTitle (line 26) | internal static int IdFromTitle (string title, Type type)
method GetId (line 33) | static int GetId (Type type, string propertyName)
FILE: BottomBar.XamarinForms/BottomBarPage.cs
class BottomBarPage (line 22) | public class BottomBarPage : TabbedPage
type BarThemeTypes (line 24) | public enum BarThemeTypes { Light, DarkWithAlpha, DarkWithoutAlpha }
method RaiseCurrentPageChanged (line 29) | public void RaiseCurrentPageChanged()
FILE: BottomBar.XamarinForms/BottomBarPageExtensions.cs
class BottomBarPageExtensions (line 21) | public static class BottomBarPageExtensions
method SetTabColor (line 43) | public static void SetTabColor(BindableObject bindable, Color color)
method GetTabColor (line 48) | public static Color GetTabColor(BindableObject bindable)
method SetBadgeCount (line 53) | public static void SetBadgeCount(BindableObject bindable, int badgeCount)
method GetBadgeCount (line 58) | public static int GetBadgeCount(BindableObject bindable)
method SetBadgeColor (line 63) | public static void SetBadgeColor(BindableObject bindable, Color color)
method GetBadgeColor (line 68) | public static Color GetBadgeColor(BindableObject bindable)
FILE: example-xaml/BottomBarXFExampleXaml.Droid/MainActivity.cs
class MainActivity (line 29) | [Activity (Label = "BottomBarXFExampleXaml.Droid", Icon = "@drawable/ico...
method OnCreate (line 32) | protected override void OnCreate (Bundle bundle)
FILE: example-xaml/BottomBarXFExampleXaml/App.xaml.cs
class App (line 5) | public partial class App : Application
method App (line 7) | public App ()
method OnStart (line 14) | protected override void OnStart ()
method OnSleep (line 19) | protected override void OnSleep ()
method OnResume (line 24) | protected override void OnResume ()
FILE: example-xaml/BottomBarXFExampleXaml/BarPage.xaml.cs
class BarPage (line 3) | public partial class BarPage
method BarPage (line 5) | public BarPage()
FILE: example-xaml/BottomBarXFExampleXaml/TabPage.xaml.cs
class TabPage (line 3) | public partial class TabPage
method TabPage (line 5) | public TabPage ()
FILE: example/BottomBarXFExample.Droid/MainActivity.cs
class MainActivity (line 29) | [Activity (Label = "BottomBarXFExample.Droid", Icon = "@drawable/icon", ...
method OnCreate (line 32) | protected override void OnCreate (Bundle bundle)
FILE: example/BottomBarXFExample.iOS/AppDelegate.cs
class AppDelegate (line 8) | [Register("AppDelegate")]
method FinishedLaunching (line 19) | public override bool FinishedLaunching(UIApplication application, NSDi...
method OnResignActivation (line 34) | public override void OnResignActivation(UIApplication application)
method DidEnterBackground (line 42) | public override void DidEnterBackground(UIApplication application)
method WillEnterForeground (line 48) | public override void WillEnterForeground(UIApplication application)
method OnActivated (line 54) | public override void OnActivated(UIApplication application)
method WillTerminate (line 60) | public override void WillTerminate(UIApplication application)
FILE: example/BottomBarXFExample.iOS/Main.cs
class Application (line 5) | public class Application
method Main (line 8) | static void Main(string[] args)
FILE: example/BottomBarXFExample/App.xaml.cs
class App (line 9) | public partial class App : Application
method App (line 11) | public App ()
method OnStart (line 77) | protected override void OnStart ()
method OnSleep (line 82) | protected override void OnSleep ()
method OnResume (line 87) | protected override void OnResume ()
FILE: example/BottomBarXFExample/TabPage.xaml.cs
class TabPage (line 8) | public partial class TabPage : ContentPage
method TabPage (line 10) | public TabPage ()
method UpdateLabel (line 15) | public void UpdateLabel ()
Condensed preview — 67 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (161K chars).
[
{
"path": ".gitignore",
"chars": 2638,
"preview": "## Xamarin stuff\nComponents\n[Pp]ackages\n*.userprefs\nResource.designer.cs\n\n## Ignore Visual Studio temporary files, build"
},
{
"path": "BottomBar.Droid/BottomBar.Droid.csproj",
"chars": 7043,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "BottomBar.Droid/Properties/AssemblyInfo.cs",
"chars": 1779,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-no"
},
{
"path": "BottomBar.Droid/Renderers/BottomBarPageRenderer.cs",
"chars": 11379,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now"
},
{
"path": "BottomBar.Droid/Resources/AboutResources.txt",
"chars": 1738,
"preview": "Images, layout descriptions, binary blobs and string dictionaries can be included \r\nin your application as resource file"
},
{
"path": "BottomBar.Droid/Resources/values/Strings.xml",
"chars": 126,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<resources>\r\n\t<string\r\n\t\tname=\"library_name\">BottomBar.Droid</string>\r\n</resour"
},
{
"path": "BottomBar.Droid/Utils/IPageController.cs",
"chars": 1058,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-no"
},
{
"path": "BottomBar.Droid/Utils/MeasureSpecFactory.cs",
"chars": 1233,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-no"
},
{
"path": "BottomBar.Droid/Utils/PageController.cs",
"chars": 1764,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-no"
},
{
"path": "BottomBar.Droid/Utils/ReflectedProxy.cs",
"chars": 2665,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now"
},
{
"path": "BottomBar.Droid/Utils/ResourceManagerEx.cs",
"chars": 1383,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-no"
},
{
"path": "BottomBar.Droid/packages.config",
"chars": 1162,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"BottomNavigationBar\" version=\"1.4.0.2\" targetFramework"
},
{
"path": "BottomBar.XamarinForms/BottomBar.XamarinForms.csproj",
"chars": 3229,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microso"
},
{
"path": "BottomBar.XamarinForms/BottomBarPage.cs",
"chars": 1067,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now"
},
{
"path": "BottomBar.XamarinForms/BottomBarPageExtensions.cs",
"chars": 2539,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-no"
},
{
"path": "BottomBar.XamarinForms/Properties/AssemblyInfo.cs",
"chars": 1767,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-no"
},
{
"path": "BottomBar.XamarinForms/packages.config",
"chars": 159,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"Xamarin.Forms\" version=\"2.3.2.127\" targetFramework=\"po"
},
{
"path": "BottomBar.nuspec",
"chars": 1481,
"preview": "<?xml version=\"1.0\"?>\n<package >\n <metadata>\n <id>ThriveGmbH.BottomNavigationBar.XF</id>\n <version>1.0.2</version"
},
{
"path": "BottomBarXF.sln",
"chars": 23420,
"preview": "Microsoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 14\r\nVisualStudioVersion = 14.0.25420.1\r\nMin"
},
{
"path": "LICENSE",
"chars": 1083,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2016 Sebastian Schmidt\n\nPermission is hereby granted, free of charge, to any person"
},
{
"path": "README.md",
"chars": 1617,
"preview": "# BottomNavigationBarXF\n\nA Bottom Navigation Bar implementation for Xamarin Forms. \nIt's using the [Bottom Navigation Ba"
},
{
"path": "example/BottomBarXFExample/App.xaml",
"chars": 265,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Application\r\n\txmlns=\"http://xamarin.com/schemas/2014/forms\"\r\n\txmlns:x=\"http://"
},
{
"path": "example/BottomBarXFExample/App.xaml.cs",
"chars": 3172,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing BottomBar.XamarinForms;\r\nusing Xamarin.Forms"
},
{
"path": "example/BottomBarXFExample/BottomBarXFExample.csproj",
"chars": 3674,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "example/BottomBarXFExample/Properties/AssemblyInfo.cs",
"chars": 1780,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-no"
},
{
"path": "example/BottomBarXFExample/TabPage.xaml",
"chars": 481,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ContentPage\n\txmlns=\"http://xamarin.com/schemas/2014/forms\"\n\txmlns:x=\"http://sch"
},
{
"path": "example/BottomBarXFExample/TabPage.xaml.cs",
"chars": 321,
"preview": "using System;\r\nusing System.Collections.Generic;\r\n\r\nusing Xamarin.Forms;\r\n\r\nnamespace BottomBarXFExample\r\n{\r\n\tpublic pa"
},
{
"path": "example/BottomBarXFExample/packages.config",
"chars": 159,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"Xamarin.Forms\" version=\"2.3.2.127\" targetFramework=\"po"
},
{
"path": "example/BottomBarXFExample.Droid/Assets/AboutAssets.txt",
"chars": 623,
"preview": "Any raw assets you want to be deployed with your application can be placed in\r\nthis directory (and child directories) an"
},
{
"path": "example/BottomBarXFExample.Droid/BottomBarXFExample.Droid.csproj",
"chars": 9920,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "example/BottomBarXFExample.Droid/MainActivity.cs",
"chars": 1495,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-no"
},
{
"path": "example/BottomBarXFExample.Droid/Properties/AndroidManifest.xml",
"chars": 368,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" android:ver"
},
{
"path": "example/BottomBarXFExample.Droid/Properties/AssemblyInfo.cs",
"chars": 1796,
"preview": "/*\r\n * BottomNavigationBar for Xamarin Forms\r\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-no"
},
{
"path": "example/BottomBarXFExample.Droid/Resources/AboutResources.txt",
"chars": 1738,
"preview": "Images, layout descriptions, binary blobs and string dictionaries can be included \r\nin your application as resource file"
},
{
"path": "example/BottomBarXFExample.Droid/Resources/layout/Tabbar.axml",
"chars": 509,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<android.support.design.widget.TabLayout\r\n\txmlns:android=\"http://schemas.androi"
},
{
"path": "example/BottomBarXFExample.Droid/Resources/layout/Toolbar.axml",
"chars": 410,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<android.support.v7.widget.Toolbar\r\n\txmlns:android=\"http://schemas.android.com/"
},
{
"path": "example/BottomBarXFExample.Droid/Resources/values/colors.xml",
"chars": 156,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"white\">#ffffff</color>\n <color name=\"bb_darkBackgroun"
},
{
"path": "example/BottomBarXFExample.Droid/Resources/values/styles.xml",
"chars": 1434,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<resources>\r\n\t<style\r\n\t\tname=\"MyTheme\"\r\n\t\tparent=\"MyTheme.Base\">\r\n\t</style>\r\n\t<"
},
{
"path": "example/BottomBarXFExample.Droid/packages.config",
"chars": 1162,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"BottomNavigationBar\" version=\"1.4.0.2\" targetFramework"
},
{
"path": "example/BottomBarXFExample.iOS/AppDelegate.cs",
"chars": 2700,
"preview": "using Foundation;\nusing UIKit;\n\nnamespace BottomBarXFExample.iOS\n{\n // The UIApplicationDelegate for the application"
},
{
"path": "example/BottomBarXFExample.iOS/BottomBarXFExample.iOS.csproj",
"chars": 8341,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microso"
},
{
"path": "example/BottomBarXFExample.iOS/Entitlements.plist",
"chars": 190,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "example/BottomBarXFExample.iOS/Info.plist",
"chars": 980,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "example/BottomBarXFExample.iOS/Main.cs",
"chars": 403,
"preview": "using UIKit;\n\nnamespace BottomBarXFExample.iOS\n{\n public class Application\n {\n // This is the main entry p"
},
{
"path": "example/BottomBarXFExample.iOS/Properties/AssemblyInfo.cs",
"chars": 1446,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "example/BottomBarXFExample.iOS/Resources/LaunchScreen.xib",
"chars": 3346,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" vers"
},
{
"path": "example/BottomBarXFExample.iOS/packages.config",
"chars": 146,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"Xamarin.Forms\" version=\"2.3.2.127\" targetFramework=\"xa"
},
{
"path": "example-xaml/BottomBarXFExampleXaml/App.xaml",
"chars": 261,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Application\n\txmlns=\"http://xamarin.com/schemas/2014/forms\"\n\txmlns:x=\"http://sch"
},
{
"path": "example-xaml/BottomBarXFExampleXaml/App.xaml.cs",
"chars": 438,
"preview": "using Xamarin.Forms;\n\nnamespace BottomBarXFExampleXaml\n{\n\tpublic partial class App : Application\n\t{\n\t\tpublic App ()\n\t\t{\n"
},
{
"path": "example-xaml/BottomBarXFExampleXaml/BarPage.xaml",
"chars": 1038,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<xf:BottomBarPage xmlns=\"http://xamarin.com/schemas/2014/forms\"\n xm"
},
{
"path": "example-xaml/BottomBarXFExampleXaml/BarPage.xaml.cs",
"chars": 162,
"preview": "namespace BottomBarXFExampleXaml\n{\n public partial class BarPage\n {\n public BarPage()\n {\n "
},
{
"path": "example-xaml/BottomBarXFExampleXaml/BottomBarXFExampleXaml.csproj",
"chars": 3908,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microso"
},
{
"path": "example-xaml/BottomBarXFExampleXaml/Properties/AssemblyInfo.cs",
"chars": 1741,
"preview": "/*\n * BottomNavigationBar for Xamarin Forms\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now)"
},
{
"path": "example-xaml/BottomBarXFExampleXaml/TabPage.xaml",
"chars": 485,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ContentPage\n\txmlns=\"http://xamarin.com/schemas/2014/forms\"\n\txmlns:x=\"http://sch"
},
{
"path": "example-xaml/BottomBarXFExampleXaml/TabPage.xaml.cs",
"chars": 226,
"preview": "namespace BottomBarXFExampleXaml\n{\n\tpublic partial class TabPage\n\t{\n\t\tpublic TabPage ()\n\t\t{\n\t\t\tInitializeComponent ();\n"
},
{
"path": "example-xaml/BottomBarXFExampleXaml/packages.config",
"chars": 159,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"Xamarin.Forms\" version=\"2.3.2.127\" targetFramework=\"po"
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/Assets/AboutAssets.txt",
"chars": 604,
"preview": "Any raw assets you want to be deployed with your application can be placed in\nthis directory (and child directories) and"
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/BottomBarXFExampleXaml.Droid.csproj",
"chars": 9781,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microso"
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/MainActivity.cs",
"chars": 1458,
"preview": "/*\n * BottomNavigationBar for Xamarin Forms\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now)"
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/Properties/AndroidManifest.xml",
"chars": 311,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" android:ver"
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/Properties/AssemblyInfo.cs",
"chars": 1756,
"preview": "/*\n * BottomNavigationBar for Xamarin Forms\n * Copyright (c) 2016 Thrive GmbH and others (http://github.com/thrive-now)"
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/Resources/AboutResources.txt",
"chars": 1694,
"preview": "Images, layout descriptions, binary blobs and string dictionaries can be included \nin your application as resource files"
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/Resources/layout/Tabbar.axml",
"chars": 497,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.design.widget.TabLayout\n\txmlns:android=\"http://schemas.android."
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/Resources/layout/Toolbar.axml",
"chars": 401,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<android.support.v7.widget.Toolbar\n\txmlns:android=\"http://schemas.android.com/ap"
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/Resources/values/colors.xml",
"chars": 156,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"white\">#ffffff</color>\n <color name=\"bb_darkBackgroun"
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/Resources/values/styles.xml",
"chars": 1393,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<resources>\n\t<style\n\t\tname=\"MyTheme\"\n\t\tparent=\"MyTheme.Base\">\n\t</style>\n\t<!-- Ba"
},
{
"path": "example-xaml/BottomBarXFExampleXaml.Droid/packages.config",
"chars": 1162,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"BottomNavigationBar\" version=\"1.4.0.2\" targetFramework"
}
]
About this extraction
This page contains the full source code of the thrive-now/BottomNavigationBarXF GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 67 files (141.6 KB), approximately 42.9k tokens, and a symbol index with 81 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.