将横幅放置在布局底部的问题

时间:2011-02-06 06:50:31

标签: java android mobile

对于我的应用,我使用清单文件中的主题功能隐藏了我的活动的标题栏和通知栏。在活动的底部,我希望有一个48dip高的广告横幅,在此之上剩下的空间应该填充我的类GameView中的一个对象,这里只是在Lunar Lander样本中看到的方式扩展了SurfaceView。

我目前的布局为我完成了这项任务:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">

    <GameView android:id="@+id/game_view"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_weight="1">

<com.admob.android.ads.AdView android:id="@+id/ad"
    android:layout_width="fill_parent" android:layout_height="48dip" />

</LinearLayout>

但是,当我使用主页键切换我的应用程序时出现问题(通知栏会返回),然后切换回我的活动。当我切换回来时,屏幕会短暂变黑,我的绘制表面视图会出现在通知栏下方,然后通知栏会动画并消失,我的表面视图会转移到屏幕顶部。问题是黑色水平矩形现在掩盖了我的广告横幅的顶部,其中此栏看起来与通知栏的高度相同。 Ascii艺术:

-------------
|           |
|           |   <- surface view the same size as expected
|           |
|           |
#############   <- black rectangle
|           |   <- ad banner with the top part masked by the rectangle
-------------

就好像在通知栏消失之前布置了视图,当条形图消失时,视图再次布局,但布局广告栏时出现问题。

有关如何解决此问题的任何提示?

如果它有帮助,我在Android 2.1上。我尝试了另一种RelativeLayout方法,但遇到了同样的问题。另一种选择可能会解决它,但我无法想到任何事情。

编辑:用于设置我的活动的相关清单代码:

<application android:label="@string/app_name" android:icon="@drawable/app_icon">
    <activity android:name="MainActivity" android:label="@string/app_name"
        android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
....

1 个答案:

答案 0 :(得分:0)

如果您在清单中使用android:theme="@android:style/Theme.NoTitleBar.Fullscreen"而不是通过Java代码删除通知栏,则此问题可能会消失。 Leastways,当我使用使用此主题的this sample project进行测试时,我看不到您描述的动画效果。