- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 xamarian 表单在我的应用程序中包含横幅广告。假设我有一个广告 View ,并且我想将其放置在我的应用程序中,该应用程序在所有页面上都使用 iOS、Android 和 UWP 上的导航。
如何使所有页面的广告 View 实例都相同?
最好我不想重新加载每个页面的广告 View ,而是希望它在每个页面中都存在而不被重新加载。我认为它可能是两种方式之一,一种总是在屏幕上,如导航栏,内容在添加下方呈现,另一种方式是 View 在每个页面上,但加载单个实例跨所有页面。
最佳答案
这是一个很好的方法。
转到 App.xaml 并声明以下资源:
...
<controls:AdViewControl AdUnitId="YOUR_UNIT_ID" BackgroundColor="#FFFFFF"
HeightRequest="50" x:Key="AdViewControl1"/>
<ControlTemplate x:Key="AdOnFooterPage">
<Grid BackgroundColor="#FFFFFF">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ContentView Content="{StaticResource AdViewControl1}" Grid.Row="1"/>
</Grid>
</ControlTemplate>
...
接下来是将 ControlTemplate 与要显示广告的页面链接:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
mc:Ignorable="d"
x:Class="BdvAssistant.Views.Recharge.RechargePage"
Title="Page 1"
ControlTemplate="{StaticResource AdOnFooterPage}">
...
(这是可选的)如果您的导航缓存页面,您将需要取消 AdViewControl 与旧父级(ControlTemplate)的链接并将其分配给新父级。这里是一个MasterDetailPage的例子,下面的代码应该适应MainPage。
public partial class MainPage : MasterDetailPage
{
private readonly Dictionary<MenuItemType, NavigationPage> _menuPages
= new Dictionary<MenuItemType, NavigationPage>();
private readonly Dictionary<MenuItemType, ContentView> _adContentViews
= new Dictionary<MenuItemType, ContentView>();
private AdViewControl AdControl => (AdViewControl)Application.Current.Resources["AdViewControl1"];
public MainPage()
{
InitializeComponent();
}
public async Task NavigateFromMenu(MenuItemType menu)
{
if (AdControl.Parent is ContentView parent)
parent.Content = null;
if (_menuPages.TryGetValue(menu, out var newPage))
{
if (_adContentViews.TryGetValue(menu, out var adParent))
adParent.Content = AdControl;
}
else
{
switch (menu)
{
case MenuItemType.Dashboard:
newPage = new NavigationPage(new DashboardPage());
break;
case MenuItemType.Security:
newPage = new NavigationPage(new PinManagerPage());
break;
default:
return;
}
_adContentViews[menu] = AdControl.Parent as ContentView;
_menuPages[menu] = newPage;
}
if (ReferenceEquals(Detail, newPage))
return;
Detail = newPage;
if (MasterBehavior == MasterBehavior.Popover)
{
if (Device.RuntimePlatform == Device.Android)
await Task.Delay(200);
IsPresented = false;
}
}
}
关于c# - Xamarin Forms - 如何让 View (广告)在所有页面上都有一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43713932/
我知道我应该指定 argtypes对于我的 C/C++ 函数,因为我的某些调用会导致堆栈损坏。 myCfunc.argtypes = [ct.c_void_p, ct.POINTER(ct.c
我正在从 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators 学习 Itera
在我的数据库中,我有一个类别表。类别可以有父类别,使其成为递归关系 我还有一个产品表。每个产品都属于一个类别。 例如,我有一棵树,如下所示: Category Sub-Category 1
定义列表要求每个 会有标签? 例子: option1 每个 存在他的如果 空: value1 name2 value2 选项 2 每个 不存在他的如果空: value1 name2 value
我制作了一个脚本,它在开始时检查操作系统版本。 它读取/etc/os-release 文件,并检查操作系统是否为 CentOS 7。 但我不确定我是否可以确保每个 CentOS 7 都有那个文件。 其
我一直在使用 webapi 设置一个 mvc 项目。我可以正常工作,但我不知道为什么我的 GET 调用的 URL 中有附加部分。 示例: /api/User/Zholen?_=137349028082
我创建了具有 ACTIVE BOOL 的基类 class BaseTest{ public: bool active = false; BaseTest(){ // make
.parent { background-color: yellow; display: flex; justify-content: space-evenly; } .parent >
完整的错误是: AttributeError: Neither 'ColumnClause' object nor 'Comparator' object has an attribute 'desc
我的 GUI 中有一些功能可以随着时间的推移更新给定的文本组件。理想情况下,我希望它接受任何具有 getText/setText 方法的内容。使用 JTextField 和 JTextPane 可以轻
我是一名优秀的程序员,十分优秀!