2012-07-01 12 views
7

पर आकार परिवर्तन मैं की तरहएंड्रॉयड admob परिदृश्य

<activity 
      android:name="com.google.ads.AdActivity" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
      /> 

यह आकार दिया जाता है ठीक से जब डिवाइस rotacion प्रकट पर AdMob घोषणा की है लेकिन अब मैं गतिविधि है कि आदेश गतिविधि फिर से लोड करने से रोकने के लिए AdMob शामिल करने के लिए android:configChanges="keyboardHidden|orientation" जोड़ना होगा। मैं इसे प्राप्त कर रहा हूं लेकिन अब परिदृश्य के दौरान adMob को स्केल नहीं किया गया है। ऑन कॉन्फिग चेंज इवेंट मैं अब एडमोब को उचित परिदृश्य आयामों के साथ आकार देने के लिए मजबूर कर सकता हूं। कैसे? धन्यवाद।

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
    } 
+0

http://stackoverflow.com/questions/20929963/admob-ad-not-resizing-correctly-upon-screen-orientation-includes-pictures और http://stackoverflow.com/questions/26703152/smart से संबंधित -बैनर-कंटेनर-व्यू-वॉन-रीसाइज –

उत्तर

10

मुझे एक ही समस्या का सामना करना पड़ा, लेकिन एक कार्य-आसपास मिला।

मेरा विज्ञापन दृश्य पृष्ठ के निचले हिस्से में एक सापेक्ष लेआउट के अंदर बैठता है। लोड होने पर यह सही दिखता है, इसलिए मुझे लगता है कि LayoutParams सही थे। इस समस्या को ठीक करने के लिए, मुझे RelativeLayout से सब कुछ हटाना पड़ा, एक नया AdView बनाएं, और मूल LayoutParams के साथ इसे सही क्रम में वापस जोड़ें।

कुछ की तरह:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    AdView adView = (AdView)findViewById(R.id.adView); 
    View contentFrame = findViewById(R.id.contentFrameLayout); 

    RelativeLayout parent = (RelativeLayout) adView.getParent(); 
    LayoutParams mapFrameParams = contentFrame.getLayoutParams(); 
    LayoutParams adViewParams = adView.getLayoutParams(); 

    parent.removeView(adView); 
    parent.removeView(contentFrame); 

    AdView newAdView = new AdView(this, AdSize.SMART_BANNER, getString(R.string.admob_pubId)); 

    newAdView.setId(R.id.adView); 

    parent.addView(newAdView, adViewParams); 
    parent.addView(contentFrame,mapFrameParams); 
    newAdView.loadAd(new AdRequest()); 
} 

यह मेरे लिए काम करता है, लेकिन अभी भी एक हैक की तरह लगता है।

+0

मेरे आवेदन को एपीआई स्तर 4 के समर्थन की आवश्यकता है ताकि कॉन्फ़िगरेशन चेंज समर्थित नहीं है। क्या इसका प्रबंधन करने का कोई और तरीका नहीं है? –

+1

बस अगर किसी को एपीआई स्तर <8 के लिए समाधान की आवश्यकता है, तो आपको @Oargetride से पहले @TargetApi (8) जोड़ना होगा। –

+0

एक हैक हो सकता है, लेकिन यह काम करता है। धन्यवाद – Matt

3

इस स्थापना का प्रयास करें:

<com.google.ads.AdView 
    android:id="@+id/adView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    ads:adSize="SMART_BANNER" 
    ads:adUnitId="@string/adkey" 
    ads:loadAdOnCreate="false" 
    android:focusable="false" /> 

SMART_BANNER स्वचालित रूप से सबसे अच्छा आकार और अपने विज्ञापन के लिए प्रकार का चयन करता है।

आपके onConfigurationChanged विधि में आप AdView के लिए एक नए विज्ञापन का अनुरोध करेंगे।

ध्यान दें कि आपको xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" जोड़ने की आवश्यकता हो सकती है।

+1

बैनर को आपके सुझाव का उपयोग करते हुए डिवाइस रोटेशन पर फिर से अनुरोध किया जाता है लेकिन उसी आकार में रहता है – Jaume

+3

मेरे पास एक ही समस्या है, बैनर को फिर से अनुरोध किया जाता है जब आपके सुझाव का उपयोग करके डिवाइस रोटेशन होता है लेकिन उसी पर रहता है आकार, क्या आपने इसे ठीक किया है? – Giuseppe

+4

मुझे लगता है कि विज्ञापन दृश्य लेआउट में जोड़े जाने पर इसका आकार गणना करता है, न कि जब यह विज्ञापन प्राप्त करता है (यह अच्छा होगा, हालांकि), इसलिए मुझे लगता है कि यह क्यों काम नहीं कर रहा है। –

3

पर्याप्त उत्तर देने के लिए पर्याप्त प्रतिनिधि नहीं है लेकिन आप सही जस्टिन स्मिथ हैं। एरिक Leichtenschlag यहाँ कहा गया है के रूप में https://groups.google.com/forum/#!msg/google-admob-ads-sdk/8Ch7VmAm7RE/34Tdw6Zz4jAJ adview अगर आप SMART_BANNER

उपयोग कर रहे हैं क्या मैंने किया था लेआउट से adview निकालने के लिए, adview नष्ट, इसे पुन:, उसे वापस जोड़ें लेआउट में निर्मित किए जाने की जरूरत है और फिर एक AdRequest जारी ।

+2

में वर्तमान AdMob के एसडीके में अद्यतन AdView निर्माण को स्रोत के लिए धन्यवाद, मुझे नहीं लगता कि मैंने अभी तक यह देखा है। –

संबंधित मुद्दे