Android应用程序恢复时标题栏留下空间

5

我在我的Android应用中使用Tab Host,隐藏了Titlebar。

当我离开应用并恢复它时,出现了一些奇怪的行为。

如果我使用listView.setAdapter恢复到一个选项卡,则Titlebar被隐藏,并且其所占用的空间被应用程序消耗。但是,如果我恢复到没有listView.setAdapter的任何选项卡,则Titlebar被隐藏,但是它所使用的空间仍然保留下来。

这将把我的选项卡(位于屏幕底部)推出屏幕。如果我切换到其他任何选项卡,该空间将再次被我的应用程序使用。

我尝试过无效化我应用程序中的大多数明显视图,但没有成功。以下是我的tab_activity xml。非常感谢!

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

        <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@android:id/tabhost" android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <LinearLayout android:orientation="vertical"
                android:layout_width="fill_parent" android:layout_height="fill_parent">
                <FrameLayout android:id="@android:id/tabcontent"
                    android:layout_width="fill_parent" android:layout_height="0dip"
                    android:layout_weight="1" />

                <TabWidget android:id="@android:id/tabs"
                    android:layout_width="fill_parent" android:layout_height="wrap_content"
                    android:layout_weight="0" />
            </LinearLayout>
        </TabHost>

    </LinearLayout>

这是清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tar.projectx" android:versionCode="1"
    android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />

    <application android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
        <activity android:name=".Splash" android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" android:label="@string/app_name" android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="SearchActivity" android:label="SearchActivity" android:screenOrientation="portrait"></activity>
        <activity android:name="SearchListActivity" android:label="SearchListActivity" android:screenOrientation="portrait"></activity>
        <activity android:name="ContactActivity" android:label="ContactActivity" android:screenOrientation="portrait"></activity>
    </application>
</manifest>

有趣的是,如果我在持有tabhost的mainActivity的onResume方法中使用下面的代码,一旦toast消失,视图就会刷新,并且顶部的空间再次被我的应用程序占用。显然,这并不是什么解决办法,但可能会帮助某些人理解发生了什么。

@Override
    protected void onResume() {
        super.onResume();

        Toast.makeText(this, "Welcome Back", Toast.LENGTH_LONG).show();
    } 

我有完全相同的问题。你找到解决方案了吗?有人有解决方案吗? - Inna
“使用带有listView.setAdapter的列表活动恢复到活动”这句话是什么意思? - a.ch.
嗨,Inna。我必须承认,在经受了一个“可用性顾问”的严厉斥责之后,我意识到我永远不应该隐藏标题栏,因为用户有权查看他们的信号、电池、通知等等。如果这是绝对优先级,那就没什么帮助了。抱歉。但是,如果你找到答案,那将会很有趣。 - user466607
a.ch. 回答你的问题。如果我在显示一个带有listview(使用setAdapter进行填充)的Activity时离开了应用程序,然后再返回应用程序(恢复活动),问题就不会出现。谢谢。 - user466607
2个回答

0

我会尝试在我的onResume()方法中手动调用requestLayout()和/或requestWindowFeature(Window.FEATURE_NO_TITLE)... 此外,尝试查看你的视图何时调用onMeasure()方法。这只是我脑海中的一些想法;) 希望能有所帮助。干杯!


1
在 onResume 中不能调用 requestWindowFeature(Window.FEATURE_NO_TITLE)。 - Necronet

0
请将主选项卡栏活动主题设置为android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接