Wenn Sie sich mit anderen Nutzern über unsere Produkte austauschen und Feedback geben möchten, können Sie dem offiziellen AdMob-Discord-Kanal auf dem Server der Google Advertising and Measurement Community beitreten.
Adaptive Banner sind die nächste Generation responsiver Anzeigen. Die Anzeigengröße wird an das jeweilige Gerät angepasst, um die bestmögliche Leistung zu erzielen. Anders als bei Bannern mit fester Größe, die eine feste Höhe haben, können Entwickler bei adaptiven Bannern die Anzeigenbreite festlegen. Auf dieser Grundlage wird dann die optimale Anzeigengröße ermittelt.
Dazu werden bei adaptiven Inline-Bannern maximale anstatt fester Höhen verwendet. Das bietet Möglichkeiten für eine bessere Leistung.
Wann sollten adaptive Inline-Banner verwendet werden?
Adaptive Inline-Banner sind größer und höher als verankerte adaptive Banner. Sie haben eine variable Höhe und können so hoch wie der Gerätebildschirm sein.
Sie sind für die Platzierung in scrollbaren Inhalten vorgesehen, z. B.:
Beachten Sie beim Implementieren adaptiver Banner in Ihrer App die folgenden Punkte:
Achten Sie darauf, dass Sie die neueste Version des Google Mobile Ads SDK und, falls Sie die Vermittlung verwenden, die neuesten Versionen Ihrer Vermittlungsadapter verwenden.
Die Größen für adaptive Inline-Banner sind so konzipiert, dass sie am besten funktionieren, wenn die gesamte verfügbare Breite genutzt wird. In den meisten Fällen entspricht sie der vollen Breite des Displays des verwendeten Geräts. Berücksichtigen Sie dabei die sichtbaren Bereiche.
AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight)
Wenn Sie die APIs für adaptive Inline-Banner verwenden, gibt das Google Mobile Ads SDK ein AdSize mit der angegebenen Breite und einem Inline-Flag zurück. Die Höhe ist entweder null oder maxHeight, je nachdem, welche API Sie verwenden. Die tatsächliche Höhe der Anzeige wird angegeben, wenn sie zurückgegeben wird.
Ein adaptives Inline-Banner ist für die Platzierung in scrollbarem Content vorgesehen. Das Banner kann je nach API so hoch wie der Gerätebildschirm sein oder eine maximale Höhe haben.
Implementierung
So implementieren Sie ein einfaches adaptives Inlinebanner:
Größe für ein adaptives Inline-Banner abrufen Diese Größe wird für die Anforderung des adaptiven Banners verwendet. Damit die adaptive Anzeigengröße verwendet wird, müssen Sie Folgendes beachten:
Ruft die Breite des verwendeten Geräts in dichteunabhängigen Pixeln ab oder legt eine eigene Breite fest, wenn Sie nicht die volle Breite des Bildschirms verwenden möchten.
Mit MediaQuery.of(context) können Sie die Bildschirmbreite abrufen.
Verwenden Sie die entsprechenden statischen Methoden in der Anzeigenformatklasse, z. B. AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(int width), um ein adaptives Inline-AdSize-Objekt für die aktuelle Ausrichtung abzurufen.
Wenn Sie die Höhe des Banners begrenzen möchten, können Sie die statische Methode AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight) verwenden.
Erstellen Sie ein BannerAd-Objekt mit Ihrer Anzeigenblock-ID, der Größe für adaptive Anzeigen und einem Anzeigenanfrageobjekt.
Laden Sie die Anzeige.
Verwenden Sie im onAdLoaded-Callback BannerAd.getPlatformAdSize(), um die aktualisierte Anzeigenbreite der Plattform abzurufen und die Höhe des AdWidget-Containers zu aktualisieren.
Codebeispiel
Hier ist ein Beispiel für ein Widget, das ein adaptives Inline-Banner lädt, das an die Breite des Bildschirms angepasst wird und dabei Insets berücksichtigt:
import'package:flutter/material.dart';import'package:google_mobile_ads/google_mobile_ads.dart';/// This example demonstrates inline adaptive banner ads.////// Loads and shows an inline adaptive banner ad in a scrolling view,/// and reloads the ad when the orientation changes.classInlineAdaptiveExampleextendsStatefulWidget{@override_InlineAdaptiveExampleStatecreateState()=>_InlineAdaptiveExampleState();}class_InlineAdaptiveExampleStateextendsState<InlineAdaptiveExample>{staticconst_insets=16.0;BannerAd?_inlineAdaptiveAd;bool_isLoaded=false;AdSize?_adSize;lateOrientation_currentOrientation;doubleget_adWidth=>MediaQuery.of(context).size.width-(2*_insets);@overridevoiddidChangeDependencies(){super.didChangeDependencies();_currentOrientation=MediaQuery.of(context).orientation;_loadAd();}void_loadAd()async{await_inlineAdaptiveAd?.dispose();setState((){_inlineAdaptiveAd=null;_isLoaded=false;});// Get an inline adaptive size for the current orientation.AdSizesize=AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(_adWidth.truncate());_inlineAdaptiveAd=BannerAd(// TODO: replace this test ad unit with your own ad unit.adUnitId:'ca-app-pub-3940256099942544/9214589741',size:size,request:AdRequest(),listener:BannerAdListener(onAdLoaded:(Adad)async{print('Inline adaptive banner loaded: ${ad.responseInfo}');// After the ad is loaded, get the platform ad size and use it to// update the height of the container. This is necessary because the// height can change after the ad is loaded.BannerAdbannerAd=(adasBannerAd);finalAdSize?size=awaitbannerAd.getPlatformAdSize();if(size==null){print('Error: getPlatformAdSize() returned null for $bannerAd');return;}setState((){_inlineAdaptiveAd=bannerAd;_isLoaded=true;_adSize=size;});},onAdFailedToLoad:(Adad,LoadAdErrorerror){print('Inline adaptive banner failedToLoad: $error');ad.dispose();},),);await_inlineAdaptiveAd!.load();}/// Gets a widget containing the ad, if one is loaded.////// Returns an empty container if no ad is loaded, or the orientation/// has changed. Also loads a new ad if the orientation changes.Widget_getAdWidget(){returnOrientationBuilder(builder:(context,orientation){if(_currentOrientation==orientation&&
_inlineAdaptiveAd!=null&&
_isLoaded&&
_adSize!=null){returnAlign(child:Container(width:_adWidth,height:_adSize!.height.toDouble(),child:AdWidget(ad:_inlineAdaptiveAd!,),));}// Reload the ad if the orientation changes.if(_currentOrientation!=orientation){_currentOrientation=orientation;_loadAd();}returnContainer();},);}@overrideWidgetbuild(BuildContextcontext)=>Scaffold(appBar:AppBar(title:Text('Inline adaptive banner example'),),body:Center(child:Padding(padding:constEdgeInsets.symmetric(horizontal:_insets),child:ListView.separated(itemCount:20,separatorBuilder:(BuildContextcontext,intindex){returnContainer(height:40,);},itemBuilder:(BuildContextcontext,intindex){if(index==10){return_getAdWidget();}returnText('Placeholder text',style:TextStyle(fontSize:24),);},),),));@overridevoiddispose(){super.dispose();_inlineAdaptiveAd?.dispose();}}
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-09-06 (UTC)."],[[["\u003cp\u003eAdaptive banners optimize ad size for each device, maximizing performance by using the provided ad width to determine the optimal size, unlike fixed-size banners with fixed heights.\u003c/p\u003e\n"],["\u003cp\u003eInline adaptive banners are variable-height banners, potentially as tall as the device screen, designed for placement within scrolling content.\u003c/p\u003e\n"],["\u003cp\u003eImplementation requires using the latest Google Mobile Ads SDK, providing the ad width (considering safe areas), and using the \u003ccode\u003eAdSize\u003c/code\u003e methods to get the adaptive banner size.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers need to update the ad container height after the ad loads using \u003ccode\u003eBannerAd.getPlatformAdSize()\u003c/code\u003e to accommodate potential height changes.\u003c/p\u003e\n"]]],[],null,["Select platform: [Android](/admob/android/banner/inline-adaptive \"View this page for the Android platform docs.\") [iOS](/admob/ios/banner/inline-adaptive \"View this page for the iOS platform docs.\") [Flutter](/admob/flutter/banner/inline-adaptive \"View this page for the Flutter platform docs.\")\n\n\u003cbr /\u003e\n\nAdaptive banners are the next generation of responsive ads, maximizing\nperformance by optimizing ad size for each device. Improving on fixed-size\nbanners, which only supported fixed heights, adaptive banners let developers\nspecify the ad-width and use this to determine the optimal ad size.\n\nTo pick the best ad size, inline adaptive banners use maximum instead of fixed\nheights. This results in opportunities for improved performance.\n\nWhen to use inline adaptive banners\n\nInline adaptive banners are larger, taller banners compared to anchored adaptive\nbanners. They are of variable height, and can be as tall as the device screen.\n\nThey are intended to be placed in scrolling content, for example:\n\nPrerequisites\n\n- Follow the instructions from the [Get Started guide](/admob/flutter/quick-start) on how to [Import the Mobile Ads Flutter plugin](/admob/flutter/quick-start#import_the_mobile_ads_sdk).\n\nBefore you begin **Important:** You must know the width of the view that the ad will be placed in, **and this should take into account the device width and any safe areas that are\n| applicable**.\n\nWhen implementing adaptive banners in your app, note these points:\n\n- Ensure you are using the latest version of Google Mobile Ads SDK, and if\n using mediation\n , the latest versions of your mediation adapters.\n\n- The inline adaptive banner sizes are designed to work best when using the\n full available width. In most cases, this will be the full width of the\n screen of the device in use. Be sure to take into account applicable safe areas.\n\n- The methods for getting the ad size are\n\n - `AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(int width)`\n - `AdSize.getLandscapeInlineAdaptiveBannerAdSize(int width)`\n - `AdSize.getPortraitInlineAdaptiveBannerAdSize(int width)`\n - `AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight)`\n- When using the inline adaptive banner APIs, Google Mobile Ads SDK\n returns an `AdSize` with the given width and an\n inline flag. The height is either zero or `maxHeight`, depending on which\n API you're using. The actual height of the ad is made available when it's\n returned.\n\n- An inline adaptive banner is designed to be placed in scrollable content. The\n banner can be as tall as the device screen or limited by a maximum height,\n depending on the API.\n\nImplementation\n\nFollow the steps below to implement a simple inline adaptive banner.\n\n1. **Get an inline adaptive banner ad size.** The size you get will be used to request the adaptive banner. To get the adaptive ad size make sure that you:\n 1. Get the width of the device in use in density independent pixels, or set your own width if you don't want to use the full width of the screen. You can use `MediaQuery.of(context)` to get the screen width.\n 2. Use the appropriate static methods on the ad size class, such as `AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(int width)` to get an inline adaptive `AdSize` object for the current orientation.\n 3. If you wish to limit the height of the banner, you can use the static method `AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight)`.\n2. Create a `BannerAd` object with your ad unit ID, the adaptive ad size, and an ad request object.\n3. Load the ad.\n4. In the `onAdLoaded` callback, use `BannerAd.getPlatformAdSize()` to get the updated platform ad size and update the `AdWidget` container height.\n\nCode example\n\nHere's an example widget that loads an inline adaptive banner to fit the\nwidth of the screen, accounting for insets: \n\n import 'package:flutter/material.dart';\n import 'package:google_mobile_ads/google_mobile_ads.dart';\n\n /// This example demonstrates inline adaptive banner ads.\n ///\n /// Loads and shows an inline adaptive banner ad in a scrolling view,\n /// and reloads the ad when the orientation changes.\n class InlineAdaptiveExample extends StatefulWidget {\n @override\n _InlineAdaptiveExampleState createState() =\u003e _InlineAdaptiveExampleState();\n }\n\n class _InlineAdaptiveExampleState extends State\u003cInlineAdaptiveExample\u003e {\n static const _insets = 16.0;\n BannerAd? _inlineAdaptiveAd;\n bool _isLoaded = false;\n AdSize? _adSize;\n late Orientation _currentOrientation;\n\n double get _adWidth =\u003e MediaQuery.of(context).size.width - (2 * _insets);\n\n @override\n void didChangeDependencies() {\n super.didChangeDependencies();\n _currentOrientation = MediaQuery.of(context).orientation;\n _loadAd();\n }\n\n void _loadAd() async {\n await _inlineAdaptiveAd?.dispose();\n setState(() {\n _inlineAdaptiveAd = null;\n _isLoaded = false;\n });\n\n // Get an inline adaptive size for the current orientation.\n AdSize size = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(\n _adWidth.truncate());\n\n _inlineAdaptiveAd = BannerAd(\n // TODO: replace this test ad unit with your own ad unit.\n adUnitId: 'ca-app-pub-3940256099942544/9214589741',\n size: size,\n request: AdRequest(),\n listener: BannerAdListener(\n onAdLoaded: (Ad ad) async {\n print('Inline adaptive banner loaded: ${ad.responseInfo}');\n\n // After the ad is loaded, get the platform ad size and use it to\n // update the height of the container. This is necessary because the\n // height can change after the ad is loaded.\n BannerAd bannerAd = (ad as BannerAd);\n final AdSize? size = await bannerAd.getPlatformAdSize();\n if (size == null) {\n print('Error: getPlatformAdSize() returned null for $bannerAd');\n return;\n }\n\n setState(() {\n _inlineAdaptiveAd = bannerAd;\n _isLoaded = true;\n _adSize = size;\n });\n },\n onAdFailedToLoad: (Ad ad, LoadAdError error) {\n print('Inline adaptive banner failedToLoad: $error');\n ad.dispose();\n },\n ),\n );\n await _inlineAdaptiveAd!.load();\n }\n\n /// Gets a widget containing the ad, if one is loaded.\n ///\n /// Returns an empty container if no ad is loaded, or the orientation\n /// has changed. Also loads a new ad if the orientation changes.\n Widget _getAdWidget() {\n return OrientationBuilder(\n builder: (context, orientation) {\n if (_currentOrientation == orientation &&\n _inlineAdaptiveAd != null &&\n _isLoaded &&\n _adSize != null) {\n return Align(\n child: Container(\n width: _adWidth,\n height: _adSize!.height.toDouble(),\n child: AdWidget(\n ad: _inlineAdaptiveAd!,\n ),\n ));\n }\n // Reload the ad if the orientation changes.\n if (_currentOrientation != orientation) {\n _currentOrientation = orientation;\n _loadAd();\n }\n return Container();\n },\n );\n }\n\n @override\n Widget build(BuildContext context) =\u003e Scaffold(\n appBar: AppBar(\n title: Text('Inline adaptive banner example'),\n ),\n body: Center(\n child: Padding(\n padding: const EdgeInsets.symmetric(horizontal: _insets),\n child: ListView.separated(\n itemCount: 20,\n separatorBuilder: (BuildContext context, int index) {\n return Container(\n height: 40,\n );\n },\n itemBuilder: (BuildContext context, int index) {\n if (index == 10) {\n return _getAdWidget();\n }\n return Text(\n 'Placeholder text',\n style: TextStyle(fontSize: 24),\n );\n },\n ),\n ),\n ));\n\n @override\n void dispose() {\n super.dispose();\n _inlineAdaptiveAd?.dispose();\n }\n }"]]