2016-08-19 7 views
1

У меня возникла проблема, возникающая при изменении экрана ориентации, smart_banner не освежает.Размер Adview Размер Smart_Banner сломался при изменении ориентации

Я искал, и smart_banner должен автоматически обновлять размер баннера, но они этого не делают, и я не могу понять, почему.

EDIT: КАК РАЗРЕШИТЬ ПРОБЛЕМУ

Я просто удалить, повторно связать и повторно добавить свой AdView через код на onConfigurationChanged():

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Remove the ad keeping the attributes 
     AdView ad = (AdView) findViewById(R.id.ad_view_home); 
     RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) (ad != null ? ad.getLayoutParams() : null); 
     RelativeLayout parentLayout = (RelativeLayout) (ad != null ? ad.getParent() : null); 
     if (parentLayout != null) { 
      parentLayout.removeView(ad); 
     } 

     // Re-initialise the ad 
     mAdView.destroy(); 
     mAdView = new AdView(this); 
     mAdView.setAdSize(com.google.android.gms.ads.AdSize.SMART_BANNER); 
     mAdView.setAdUnitId(getString(R.string.banner_ad_unit_id_home)); 
     mAdView.setId(R.id.ad_view_home); 
     mAdView.setLayoutParams(lp); 
     if (parentLayout != null) { 
      parentLayout.addView(mAdView); 
     } 

     // Re-fetch add and check successful load 
     AdRequest adRequest = new AdRequest.Builder() 
       .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
       .addTestDevice(getString(R.string.device_id_test1)) 
       .build(); 
     mAdView.loadAd(adRequest); 
     mAdView.setAdListener(new AdListener() { 
      @Override 
      public void onAdLoaded() { 
       super.onAdLoaded(); 
       Utils.setLayoutVisible(mAdView); 
      } 

      @Override 
      public void onAdFailedToLoad(int i) { 
       super.onAdFailedToLoad(i); 
       Utils.setLayoutInvisible(mAdView); 
      } 
     }); 
    } 

AndroidManifest.xml:

<activity 
     android:name="com.google.android.gms.ads.AdActivity" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
     android:theme="@android:style/Theme.Translucent" /> 

Я настройка AdView в XML:

<RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:ads="http://schemas.android.com/apk/res-auto" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="br.com.adley.myseriesproject.activities.HomeActivity"> 
     <content here...> 
     <com.google.android.gms.ads.AdView 
      android:id="@+id/ad_view_home" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      ads:adSize="SMART_BANNER" 
      ads:adUnitId="@string/banner_ad_unit_id_search_show"/> 
    </RelativeLayout> 

В acitivy, я настроить так:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 
     activateToolbarWithNavigationView(HomeActivity.this); 

     //Ad Config 
     // Initialize the Mobile Ads SDK. 
     MobileAds.initialize(this, getString(R.string.application_id_ad)); 

     // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in 
     // values/strings.xml. 
     mAdView = (AdView) findViewById(R.id.ad_view_home); 

     // Create an ad request. Check your logcat output for the hashed device ID to 
     // get test ads on a physical device. e.g. 
     // "Use AdRequest.Builder.addTestDevice("ABCDEF") to get test ads on this device." 
     mAdRequest = new AdRequest.Builder() 
       .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
       .addTestDevice(getString(R.string.device_id_test1)) 
       .build(); 

     // Start loading the ad in the background. 
     mAdView.loadAd(mAdRequest); 
     mAdView.setAdListener(new AdListener() { 
      @Override 
      public void onAdLoaded() { 
       super.onAdLoaded(); 
       Utils.setLayoutVisible(mAdView); 
      } 

      @Override 
      public void onAdFailedToLoad(int i) { 
       super.onAdFailedToLoad(i); 
       Utils.setLayoutInvisible(mAdView); 
      } 
     }); 

     // Tabs Setup 
     TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     final ViewPager viewPager = (ViewPager) findViewById(R.id.home_pager); 
     if (tabLayout != null) { 
      tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.favorites_label_fragment))); 
      tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.air_today_label_fragment))); 
      tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
      final HomePageAdapter adapter = new HomePageAdapter 
        (getSupportFragmentManager(), tabLayout.getTabCount()); 
      if (viewPager != null) { 
       viewPager.setAdapter(adapter); 
       viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
       tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
        @Override 
        public void onTabSelected(TabLayout.Tab tab) { 
         viewPager.setCurrentItem(tab.getPosition()); 
        } 

        @Override 
        public void onTabUnselected(TabLayout.Tab tab) { 

        } 

        @Override 
        public void onTabReselected(TabLayout.Tab tab) { 

        } 
       }); 
      } 
     } 
    } 

    @Override 
    protected void onRestart() { 
     super.onRestart(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_home_settings, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if (id == R.id.action_refresh) { 
      return false; 
     } 
     return true; 
    } 

А вот мой Gradle:

apply plugin: 'com.android.application' 

    android { 
     compileSdkVersion 23 
     buildToolsVersion "23.0.3" 

     defaultConfig { 
      applicationId "br.com.adley.myseriesproject" 
      minSdkVersion 17 
      targetSdkVersion 23 
      versionCode 7 
      versionName "Beta 5.0" 
     } 
     buildTypes { 
      release { 
       minifyEnabled false 
       proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 
      } 
     } 
    } 

    dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.android.support:recyclerview-v7:23.4.0' 
    compile 'com.android.support:cardview-v7:23.4.0' 
    compile 'com.android.support:design:23.4.0' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'org.ini4j:ini4j:0.5.4' 
    compile 'jp.wasabeef:picasso-transformations:2.1.0' 
    compile 'com.google.firebase:firebase-core:9.0.0' 
    compile 'com.google.firebase:firebase-ads:9.0.0' 
    // http://mvnrepository.com/artifact/com.balysv/material-ripple 
    compile group: 'com.balysv', name: 'material-ripple', version: '1.0.2' 

} 

    apply plugin: 'com.google.gms.google-services' 
+0

ли вы назвать adView.resume() и adView.pause() методой в вашей деятельности? –

+0

Да, я обновляю свой вопрос. – Adley

+0

переопределите super.onPause() и mAdView.pause() И сначала сначала вызовите супер методы. –

ответ

2

размер AdView не изменяются, но с SMART_BANNER еще для полного ширину объявления в новой ориентации, и поэтому он не подходит. Я думаю, что отдых AdView в этом случае может быть проще для вас сделать в коде, чем через XML.

Admob ad not resizing correctly upon screen orientation [Includes Pictures]

Надеется, что это помогает ..

+0

Я пытался сделать это с помощью кода, но у меня были проблемы с параметрами, такими как выравнивание дна и высоты и ширины, но я смешайте ответы, и это сработало! Я отредактирую свой вопрос, чтобы опубликовать правильное решение и пометить ваш как правильный, т. Е. – Adley

+0

что это за ссылка? – Glund

Смежные вопросы