2013-04-09 4 views
0

У меня возникают проблемы с показом объявлений в нижней части списка, в моем основном действии реклама работает, единственное отличие в том, что я использую viewpager вместо listview.ListView в верхней части объявления - Android

Это расположение:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <com.google.ads.AdView 
     xmlns:app="http://schemas.android.com/apk/lib/com.google.ads" 
     xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
     android:id="@+id/adView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     ads:loadAdOnCreate="true" 
     android:background="#313131" 
     app:adSize="SMART_BANNER" 
     app:adUnitId="MY_ID" /> 

    <ListView 
     android:id="@id/android:list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/adView" /> 

</RelativeLayout> 

ListView показывает на вершине объявлений и, конечно, не может быть нажата, но это же макет работает с ViewPager.

ответ

0

Другой способ.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ListView 
    android:id="@id/android:list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

<com.google.ads.AdView 
    xmlns:app="http://schemas.android.com/apk/lib/com.google.ads" 
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
    android:id="@+id/adView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    ads:loadAdOnCreate="true" 
    android:background="#313131" 
    app:adSize="SMART_BANNER" 
    app:adUnitId="MY_ID" /> 

</LinearLayout > 

Когда Ad - загружен, получите его высоту. Затем ListView bottomMargin = adHeight и Ad topMargin = (-1)*adHeight. Попробуй.

+0

Проблема заключается в том, что высота баннера динамическая, в зависимости от размера экрана и ориентации. – Shixons

+0

@Shixons, хорошо, просто обновите LayoutParams ListView при загрузке баннера и оставьте свой код без изменений. (Для обновления я имею в виду набор новых LP с шириной = match_parent, Height = wrap_content). Это должна быть работа. – jimpanzer

+0

Это не работает, список всегда отображается поверх рекламы. – Shixons

0

Окончательный макет:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <com.google.ads.AdView 
     xmlns:app="http://schemas.android.com/apk/lib/com.google.ads" 
     xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
     android:id="@+id/adView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     ads:loadAdOnCreate="true" 
     android:background="#313131" 
     app:adSize="SMART_BANNER" 
     app:adUnitId="MY_ID" /> 

    <LinearLayout 
     android:id="@+id/listview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@id/adView" /> 

</RelativeLayout> 

А потом заменить:

getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit(); 

С:

getSupportFragmentManager().beginTransaction().add(R.id.listview, list).commit(); 
0

<ListView 
    android:id="@id/android:list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    /> 

<com.google.ads.AdView 
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
    android:id="@+id/adView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#313131" 
    ads:loadAdOnCreate="true" 
    ads="SMART_BANNER" 
    ads="MY_ID" /> 

NB Это вопрос с макетом. Это не имеет никакого отношения к Admob. Если вы используете LinearLayout, тогда просто установите layout_height = "wrap + content" и layout_gravity = "1" для элемента, который вы хотите развернуть, чтобы использовать неиспользуемое пространство. В этом случае ListView.

Вашей проблема была действительно layout_height = «match_parent»

NB Я также удалил ненужное переименование объявления пространства имен.

+0

android: layout_gravity = "1" не будет работать в listView. – reidisaki

+0

Извините, я имел в виду layout_weight, а не layout_gravity. Скорректированный ответ. – William

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