推进admob广告的键盘

时间:2016-01-11 03:22:34

标签: java android admob

我有一个Android应用程序。我刚刚将示例广告添加到了我的应用中,并且我的EditText上的广告一直存在问题。

当我点击EditText时,屏幕底部的广告会向上移动到键盘上方。

我的代码如下:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    tools:context="org.alexwebber.frc.strongholdcalculator.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/autonomous"
        android:textSize="25sp"
        android:textStyle="bold"
        android:layout_alignParentStart="true"
        android:id="@+id/autoLabel" />

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:id="@+id/autogrid"
        android:layout_below="@+id/autoLabel"
        android:layout_alignParentStart="true"
        android:layout_marginTop="1dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/defreached"
            android:id="@+id/defenseReached"
            android:textSize="17sp"
            android:layout_row="0"
            android:layout_column="0"
            android:layout_columnSpan="13" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/defcrossed"
            android:textSize="17sp"
            android:id="@+id/defcrossed"
            android:layout_row="1"
            android:layout_column="0" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/lowgoal"
            android:textSize="17sp"
            android:id="@+id/lowgoalauto"
            android:layout_row="2"
            android:layout_column="0" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/highgoal"
            android:textSize="17sp"
            android:id="@+id/highgoalauto"
            android:layout_row="3"
            android:layout_column="0" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/autodefreach"
            android:textSize="12sp"
            android:layout_row="0"
            android:layout_column="24"
            android:enabled="true"
            android:text="@string/total" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/autodefcross"
            android:textSize="12sp"
            android:enabled="true"
            android:text="@string/total"
            android:layout_row="1"
            android:layout_column="24" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/autolowgoal"
            android:enabled="true"
            android:text="@string/total"
            android:textSize="12sp"
            android:layout_row="2"
            android:layout_column="24" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/autohighgoal"
            android:textSize="12sp"
            android:text="@string/total"
            android:enabled="true"
            android:layout_row="3"
            android:layout_column="24" />
    </GridLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/teleop"
        android:id="@+id/teleopLabel"
        android:layout_below="@+id/autogrid"
        android:textSize="25sp"
        android:textStyle="bold"
        android:layout_centerVertical="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="0dp" />

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="175dp"
        android:layout_below="@+id/teleopLabel"
        android:layout_alignParentStart="true"
        android:layout_marginTop="1dp"
        android:id="@+id/gridLayout">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/defcrossed"
            android:id="@+id/defcrossedtele"
            android:textSize="17sp"
            android:layout_row="0"
            android:layout_column="0" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/lowgoal"
            android:id="@+id/lowgoaltele"
            android:textSize="17sp"
            android:layout_row="1"
            android:layout_column="0" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/highgoal"
            android:id="@+id/highgoaltele"
            android:textSize="17sp"
            android:layout_row="2"
            android:layout_column="0" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/challegedTower"
            android:id="@+id/challengestower"
            android:textSize="17sp"
            android:layout_row="3"
            android:layout_column="0" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/scaledTower"
            android:id="@+id/scaledtowertele"
            android:textSize="17sp"
            android:layout_row="4"
            android:layout_column="0" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/teledefcross"
            android:text="@string/total"
            android:enabled="true"
            android:layout_row="0"
            android:textSize="12sp"
            android:layout_column="13" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/telelowgoal"
            android:text="@string/total"
            android:enabled="true"
            android:layout_row="1"
            android:textSize="12sp"
            android:layout_column="13" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/telehighgoal"
            android:text="@string/total"
            android:enabled="true"
            android:layout_row="2"
            android:textSize="12sp"
            android:layout_column="13" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/telechallengedtower"
            android:text="@string/total"
            android:enabled="true"
            android:layout_row="3"
            android:textSize="12sp"
            android:layout_column="13" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/telescaledtower"
            android:text="@string/total"
            android:enabled="true"
            android:layout_row="4"
            android:textSize="12sp"
            android:layout_column="13" />

    </GridLayout>

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/gridLayout"
        android:id="@+id/rpgrid">
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/breach"
            android:id="@+id/breach"
            android:layout_marginTop="1dp"
            android:checked="false"
            android:layout_row="0"
            android:layout_column="0"
            android:layout_below="@+id/gridLayout"/>

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/capture"
            android:id="@+id/captured"
            android:layout_marginTop="1dp"
            android:checked="false"
            android:layout_row="0"
            android:layout_column="1"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/calculate"
            android:id="@+id/button"
            android:textSize="20sp"
            android:layout_row="1"
            android:layout_column="0"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="@string/totalscore"
            android:textSize="20sp"
            android:id="@+id/total"
            android:layout_row="1"
            android:layout_column="1"
            android:layout_gravity="right" />
    </GridLayout>

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_alignParentBottom="true"
        android:windowSoftInputMode="adjustPan"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
    </com.google.android.gms.ads.AdView>
</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

您是否在清单文件中为adjustResize设置了windowSoftInputMode?这将导致您的UI布局在输入方法弹出时调整大小。如果您不想调整大小,请将其删除。

    <activity
        android:name=".TestActivity"
        android:windowSoftInputMode="adjustResize|stateAlwaysHidden"
        android:label="@string/app_name" >
    </activity>

http://developer.android.com/training/keyboard-input/visibility.html#Respond

答案 1 :(得分:0)

它向上移动并重叠EditText,因为您设置了alignParentBottom="true",因此当键盘显示时,布局父底部是SoftKeyboard的顶部。

您应该通过添加所有内容above AdView并在Manifest中的adjustResize声明中调用Activity来获得解决方案。另外,我不确定在android:windowSoftInputMode="adjustPan" xml小部件中调用AdView会做些什么......

因此,要处理此行为,请将AdView放在布局容器的顶部,并为其余内容声明一个子容器:

<RelativeLayout ...>
    <AdView
        android:id="@+id/adView"
        android:layout_alignParentBottom="true"
        ... />
    <RelativeLayout
        android:layout_above="@id/adView"
        ...>
        <TextView ...>
        <GridLayout ...>
        <GridLayout ...>
    </RelativeLayout>
</RelativeLayout>

然后,在Manifest.xml中显示键盘时调整布局:

<activity
    android:windowSoftInputMode="adjustResize"
    ... />

这应该按预期工作on similar answer。此外,还有另一种解决方法:动态检测键盘何时显示并使AdView不可见,反之亦然,但我认为它执行的代码太多而不是解决布局。