Позиционирането на нещо отдолу, но alignParentBottom=true, няма ефект

Работя върху приложение за Android и правя оформление, което има поредица от текстове за редактиране и също така съдържа реклами, предоставени от admob.

За рекламата искам да е фиксирана в долната част на екрана, но остава да плава в средата, точно под долната част на основното съдържание.

В admob adview сложих alignParentBottom=true, но изглежда не работи.

По-долу е копие на XML

<?xml version="1.0" encoding="utf-8"?>
<ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <EditText android:id="@+id/newDB_txtConnectionName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Database Connection Name"
        android:singleLine="true"
        android:inputType="textNoSuggestions" />
    <EditText android:id="@+id/newDB_txtServer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Server"
        android:singleLine="true"
        android:inputType="textNoSuggestions" />
    <EditText android:id="@+id/newDB_txtUsername"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Username"
        android:singleLine="true"
        android:inputType="textNoSuggestions" />
    <EditText android:id="@+id/newDB_txtPassword"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Password"
        android:password="true"
        android:singleLine="true"
        android:inputType="textNoSuggestions" />
    <EditText android:id="@+id/newDB_txtDatabase"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Database"
        android:singleLine="true"
        android:inputType="textNoSuggestions" />
    <EditText android:id="@+id/newDB_txtPort"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:maxLength="4"
        android:hint="Port"
        android:text="3306"
        android:singleLine="true"
        android:inputType="textNoSuggestions"/>
    <TextView
        android:layout_marginTop="10dp"
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_gravity="center_horizontal"
        android:text="Leave database blank to connect to any database on this server" />
    <LinearLayout android:id="@+id/buttonContainer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        style="?android:attr/buttonBarStyle"
        android:layout_alignParentBottom="true">
        <Button android:id="@+id/newDB_btnTest"
            android:layout_width="0dp" 
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Test Connection"
            style="?android:attr/buttonBarButtonStyle" />
        <Button android:id="@+id/newDB_btnCreate"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Create"
            android:enabled="false"
            style="?android:attr/buttonBarButtonStyle" />
    </LinearLayout>
        <com.google.android.gms.ads.AdView android:id="@+id/adView"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
             ads:adUnitId="MY_PUBLISHER_ID"
             ads:adSize="BANNER"
             android:layout_alignParentBottom="true"/>
</LinearLayout>
</ScrollView>

Благодаря за всяка помощ, която можете да предоставите.


person Boardy    schedule 19.01.2014    source източник


Отговори (2)


alignParentBottom не е валиден в LinearLayout, използвайте RelativeLayout, ако искате да използвате този флаг

person spezzino    schedule 19.01.2014
comment
Благодаря, когато променя LinearLayout на RelativeLayout, всичко се натрупва в горната част на екрана, всичко се припокрива в горната част на екрана - person Boardy; 20.01.2014
comment
Добре, можете да замените android:layout_alignParentBottom=true с android:layout_gravity=bottom, тогава няма нужда да променяте на RelativeLayout - person spezzino; 20.01.2014
comment
Все още няма късмет, все още плава точно под долната част на основния GUI, а не в долната част на екрана - person Boardy; 20.01.2014
comment
Опитайте да добавите android:fillViewport=true към ScrollView и android:layout_weight=1 към buttonContainer LinearLayout. След това добавете android:layout_gravity=bottom към AdView (обърнете внимание, че вече е в центъра, заменете го за дъното) - person spezzino; 20.01.2014
comment
Рекламата е в долната част, но контейнерът с бутони сега нараства, за да запълни пространството, така че бутоните стават огромни и вертикалната разделителна линия на контейнера стига чак до дъното на екрана - person Boardy; 20.01.2014

Ако искате да използвате LinearLayout, тогава трябва да кажете нещо, което да се разшири, за да запълни неизползваното пространство. Вие правите това, като дадете на елемента, който искате да разширите, layout_weight="1". напр

<?xml version="1.0" encoding="utf-8"?>
<ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <EditText android:id="@+id/newDB_txtConnectionName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Database Connection Name"
        android:singleLine="true"
        android:inputType="textNoSuggestions" />
    < lots more EditTexts />
    <LinearLayout android:id="@+id/buttonContainer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        style="?android:attr/buttonBarStyle"
        **android:layout_weight="1"**>
        <Some Buttons/>
    </LinearLayout>
        <com.google.android.gms.ads.AdView android:id="@+id/adView"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
             ads:adUnitId="MY_PUBLISHER_ID"
             ads:adSize="BANNER"
</LinearLayout>
</ScrollView>
person William    schedule 19.01.2014
comment
Благодаря, но за съжаление нямаше разлика - person Boardy; 20.01.2014
comment
Съжалявам, пропуснах факта, че имате layout_gravity=center за AdView. Премахнете и това. - person William; 20.01.2014
comment
Благодаря, рекламата е позиционирана най-долу, но тъй като контейнерът с бутони запълва неизползваното пространство, вертикалната линия на разделителя на бутоните също отива надолу, което изглежда малко разхвърляно. Искам контейнерът за бутони да бъде точно с височината на бутоните - person Boardy; 21.01.2014
comment
Нуждаете се от нещо, което да запълни пространството. Ако не искате някой от вашите съществуващи изгледи да запълва неизползваното пространство, предлагам ви да създадете нов изглед (може би празен TextView или празен LinearLayout) и да му дадете layout_weight=1 вместо buttonContainer. Предлагаме ви също да прочетете developer.android.com/guide/topics/ui/ declaring-layout.html - person William; 22.01.2014