Содержимое макета после линейного макета ScrollView не отображается

У меня есть полностраничный линейный макет ScrollView в моем файле MainActivity.xml. Теперь я хочу добавить макет Admob Banner Ad после макета ScrollView, чтобы мой баннер оставался липким внизу. Но после макета ScrollView, что бы я ни добавлял, ничего не отображается. если я рекламирую код баннерной рекламы внутри ScrollView, он работает, но мне нужно разместить его после макета прокрутки. Я хочу ScrollView layout_height="wrap_content", потому что высота/ширина устройства различаются. Нужна чья-то помощь. мой xml-код ниже:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/back2"

    tools:context="com.domain.appname.MainActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="match_parent"
                android:layout_height="230dp"
                app:srcCompat="@drawable/head" />


            <TextView
                android:id="@+id/textView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="App Title"
                android:textAlignment="center"
                android:textSize="24sp"
                android:textStyle="bold"
                android:layout_marginTop="15dp" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="20dp"
                android:text="App Description"
                android:textSize="20sp"/>

            <Button
                android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:padding="15dp"
                android:text="List Page"
                android:layout_marginBottom="15dp"
                android:textSize="20sp"
                style="@style/Widget.AppCompat.Button.Colored"
                android:onClick="switcher"/>
        </LinearLayout>        
    </ScrollView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            ads:adSize="SMART_BANNER"
            ads:adUnitId="@string/banner_ad_unit_id"
            >
        </com.google.android.gms.ads.AdView>
    </LinearLayout>
</LinearLayout>

person Shariful Ronie    schedule 16.06.2017    source источник


Ответы (2)


Установите высоту ScrollViews на 0dp и удалите вес в AdView (вы также можете удалить его оболочку LinearLayout)

Это работает, потому что; AdView имеет собственный размер (wrap_content). ScrollView не имеет размера, но имеет вес, поэтому все оставшееся пространство (т.е. высота родительского элемента за вычетом высоты рекламного окна) назначается ScrollView.

person RobCo    schedule 16.06.2017

Удалите атрибут android:layout_weight из AdView и оставьте его высоту равной wrap_content.

Измените высоту ScrollView на 0dp и оставьте android:layout_weight включенной.

person James McCracken    schedule 16.06.2017