首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AdMob SmartBanner在Xamain窗体网格中没有显示自动高度

AdMob SmartBanner在Xamain窗体网格中没有显示自动高度
EN

Stack Overflow用户
提问于 2020-02-08 21:55:30
回答 2查看 409关注 0票数 0

我创建了一个应用程序,并在教程之后添加了添加智能旗帜广告的代码。直到我收到一封来自AdMob的电子邮件,上面写着“受限广告服务”,这一切都是正常的。所以我拿出了我的旧代码,让它在模拟器中运行,而广告根本没有出现,甚至连空白也没有出现(尽管我仍然可以在App版本中看到空白)。

因此,我创建了一个空白的'Hello‘应用程序,遵循相同的教程。广告根本没有出现。我核实了一切。

XAML -

代码语言:javascript
复制
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <!-- Place new controls here -->
    <Label Text="Welcome to Xamarin.Forms!" 
       HorizontalOptions="Center"
       VerticalOptions="CenterAndExpand" />
    <ctrl:GoogleAdView Grid.Row="1"/>
</Grid>

然后,出于好奇,我给广告行指定了一些随机的高度,然后广告出现了。

代码语言:javascript
复制
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="50"/>
    </Grid.RowDefinitions>
    <!-- Place new controls here -->
    <Label Text="Welcome to Xamarin.Forms!" 
       HorizontalOptions="Center"
       VerticalOptions="CenterAndExpand" />
    <ctrl:GoogleAdView Grid.Row="1"/>
</Grid>

以下是我的项目(Android)的细节-

我们在Xamarin表单中使用AdMob的方式发生了变化吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-09 17:10:02

我总是必须在智能横幅控件上设置一个Height。我的布局有点不同,因为我的广告控制在一个ViewCell内,但高度逻辑应该类似于您的RowDefinition.Height。试试下面的方法(我使用Xamarin.Essentials插件来访问DeviceDisplay.MainDisplayInfo,但是还有其他方法来获得这些值)

代码语言:javascript
复制
    public static int GetSmartBannerHeight() {
        DisplayInfo metrics = DeviceDisplay.MainDisplayInfo;

        double heightDp = metrics.Height / metrics.Density;

        if (heightDp <= 400) {
            return 32;
        }

        if (heightDp <= 720) {
            return 50;
        }

        return 90;
    }
票数 1
EN

Stack Overflow用户

发布于 2020-04-01 11:45:44

公认的答案是很好的。当没有互联网连接时,问题就来了。您将留下一个空白。要解决这个问题,请考虑使用名为Xam.Plugin.Connectivity.的插件您可以使用它来检查初始化期间的连接状态,还可以处理ConnectivityChanged事件,以帮助您在没有internet连接的情况下将高度设置为零,如果设备已连接,则设置适当的高度。还要注意,您需要启用这两个android权限:ACCESS_NETWORK_STATEACCESS_WIFI_STATE.。您可以在以下位置启用它们:右键单击android项目> Properties > Android >必需的权限。示例:

代码语言:javascript
复制
public MyPage()
{
    InitializeComponent();

    if(CrossConnectivity.Current.IsConnected)
    {
        AdContainer.HeightRequest = //Set appropriate height;
    }
    CrossConnectivity.Current.ConnectivityChanged += ConnectionHasChanged;
}


private void ConnectionHasChanged(object sender, ConnectivityChangedEventArgs e)
{
    if (e.IsConnected)
    {
        AdContainer.HeightRequest = //Set appropriate height;
    }
    else
    {
        AdContainer.HeightRequest = 0;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60131554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档