2015-04-06 4 views
0

Я хочу интегрировать объявление Admob с моим приложением для Android. все работает отлично, но рекламный баннер не отображается! Я не знаю, в чем проблема. anyhelp plz это мой код. для activity_main.xml:Объявление AdView показывается с помощью ExpandableListView

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#f4f4f4" 
android:orientation="vertical" > 

<ExpandableListView 
    android:id="@+id/lvExp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<com.google.ads.AdView 
    android:id="@+id/adView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    ads:adSize="BANNER" 
    ads:adUnitId="ca-app-pub-7203358988240052/2007826925" 
    ads:loadAdOnCreate="true"/> 

</LinearLayout> 

Для моего Main_Activity.java я использовал:

AdView adView = (AdView)this.findViewById(R.id.adView); 
    adView.loadAd(new AdRequest()); 

ответ

0

Вы используете LinearLayout, который использует "старший ребенок первым" подход. В вашем макете вы старший ребенок - ExpandableListView (ELV), и, несмотря на то, что вы указали, что высота ELV должна быть обертывающей его содержимое, она по-прежнему занимает весь экран, так как в ELV достаточно контента для этого , Следовательно, для вашего рекламного объявления нет места.

Один из вариантов - использовать атрибут android: layout_weight для распределения доступного пространства экрана между различными виджетами. Итак, если вы хотите, виджеты, чтобы разделить пространство экрана таким образом, что ELV получает 90% экрана и AdsView получает 10% экрана, вы можете сделать что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#f4f4f4" 
android:orientation="vertical" > 

<ExpandableListView 
    android:id="@+id/lvExp" 
    android:layout_width="match_parent" 
    android:layout_height="0dip" <!-- When you are using weights, set the height to 0 as the weight will control the height --> 
    android:layout_weight="90" /> 

<com.google.ads.AdView 
    android:id="@+id/adView" 
    android:layout_width="fill_parent" 
    android:layout_height="0dip" 
    android:layout_weight="10" 
    ads:adSize="BANNER" 
    ads:adUnitId="ca-app-pub-7203358988240052/2007826925" 
    ads:loadAdOnCreate="true"/> 

</LinearLayout> 

При использовании веса, вы должны установить высоту в ноль, так как вес будет контролировать высоту в вертикальной ориентации.

Просто используйте любое соотношение, которое вы хотите. Вы можете использовать 80/20 или 75/25 или что угодно.

EDIT: Я загрузил ваше приложение из предоставленной вами ссылки и запускал код. Первое, что я заметил, это то, что ваш AdView занимает место. Это означает, что макет в порядке - вы не получаете показ рекламы. Поэтому я некоторое время оглядывал свой код, и мне сразу же показалось, что вы используете устаревший SDK Google Mobile Ads. Я знаю, что это устарело (см. https://developers.google.com/mobile-ads-sdk/android-legacy/), что означает, что вы не можете отправить приложение в Play Маркет, используя это. Это будет просто отвергнуто. Но я не уверен, что это причина. Я не получил сообщение об ошибке, которое вы получили. Вместо этого я получил:

No AdResponse found, <message: /log> 
Bad request. 
onFailedToReceiveAd(Invalid Ad request.) 

Это означает, что вы получаете что-то с сервера. Таким образом, ваш запрос выполняется правильно. Поэтому я немного поработал и выяснил, что в последнее время не было возвращено ни одного объявления (на этом форуме есть несколько ответов), и эта проблема, похоже, существует с устаревшим SDK , Так что это может быть причиной. Вне этого я не могу думать ни о чем другом. У меня есть некоторые теории, но мне нужно будет провести некоторое исследование, прежде чем я буду уверен. Кроме того, на Замечание, вам нужно иметь:

ads:testDevices="your device id goes here" // one you get when you type adb devices 
// this is to ensure that the services know you are simply testing and not using your own account to hit the service 

В заключение я хотел бы предложить вам мигрировать в Google Play услуги Admob. Я использовал его только для практики до и для обучения, и он работал нормально. Надеюсь это поможет.

+0

Благодарим вас за ответ и за то время, которое вы ему дали. У меня все еще есть одна и та же проблема с этими ошибками. -JS: Uncaught ReferenceError: AFMA_getSdkConstants не определен (около: blank: 1) - –

+0

Вы можете добавить полный стек ошибки к вашему вопросу. Похоже, что это не проблема пользовательского интерфейса и скорее логическая ошибка в коде. – ucsunil

+0

К сожалению, я не могу опубликовать изображение. , но я не могу написать эти erreors: -JS: Uncaught ReferenceError: AFMA_getSdkConstants не определен (о: пусто: 1) -Uncaught ReferenceError: AFMA_getSdkConstants не определен: 1 - –