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

5 android titlebar android-tabhost

我在我的Android应用程序中使用了Tab主机.我隐藏了标题栏.

当我离开应用程序并恢复它时,我有一些奇怪的行为.

如果我使用listView.setAdapter的列表活动恢复到选项卡,标题栏将被隐藏,它占用的空间将由应用程序使用.但是,如果我恢复到没有listView.setAdapter的任何选项卡,则会隐藏标题栏,但是它所使用的空格会被遗忘.

这会将我的标签(位于屏幕底部)推离屏幕.如果我更改为任何其他选项卡,我的应用程序将再次使用该空间.

我试图在没有成功的情况下使我的应用程序中的大多数明显视图无效.下面是我的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>
Run Code Online (Sandbox Code Playgroud)

这是清单

<?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>
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我在mainActivity的onResume方法中使用下面的代码来保存tabhost,一旦toast消失,视图就会刷新,顶部的空间会被我的app再次占用.显然,这不是一个很好的修复,但可能有助于人们了解正在发生的事情.

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

        Toast.makeText(this, "Welcome Back", Toast.LENGTH_LONG).show();
    } 
Run Code Online (Sandbox Code Playgroud)

Sta*_*hta 0

我会尝试手动调用requestLayout()和/或requestWindowFeature(Window.FEATURE_NO_TITLE)在我的onResume()...此外,尝试查看何时onMeasure()为您的视图调用该方法。这只是我的想法;)希望它有帮助。干杯!