В строке заголовка Android остается место при возобновлении работы приложения

Я использую Tab Host в своем приложении для Android. У меня скрыт заголовок.

Когда я выхожу из приложения и возвращаюсь к нему, у меня какое-то странное поведение.

Если я вернусь к вкладке, используя действие списка с 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>

Вот манифест

<?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>

Интересно, что если я использую приведенный ниже код в методе onResume моей mainActivity, который содержит вкладку, после исчезновения всплывающего уведомления представление обновляется, а место вверху снова занимает мое приложение. Очевидно, что это не так уж много, но может помочь кому-то понять, что происходит.

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

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

person Community    schedule 23.12.2011    source источник
comment
У меня точно такая же проблема. Вы нашли решение? Есть ли у кого-нибудь решение?   -  person Inna    schedule 16.01.2012
comment
Что вы имеете в виду, возобновляя действие, используя действие списка с listView.setAdapter?   -  person a.ch.    schedule 17.01.2012
comment
Привет Инна. Я должен признать. После хорошей критики со стороны консультанта по юзабилити я понял, что никогда не должен скрывать заголовок, так как пользователь имеет право видеть свой сигнал, батарею, уведомления и т. д. Не большая помощь, если это абсолютный приор. Извинения. Однако, если вы найдете ответ, было бы интересно узнать.   -  person    schedule 18.01.2012
comment
а.ч. Чтобы ответить на ваш вопрос. Если бы я вышел из приложения, когда отображалось действие со списком (заполненным setAdapter), то, если бы я вернулся в приложение (возобновил действие), проблема не появилась бы. ваше здоровье   -  person    schedule 18.01.2012


Ответы (2)


Я бы попытался вручную вызвать requestLayout() и/или requestWindowFeature(Window.FEATURE_NO_TITLE) в моем onResume()... кроме того, попробуйте посмотреть, когда вызывается метод onMeasure() для вашего представления. Это просто из головы;) надеюсь, что это поможет. Ваше здоровье!

person Stamoulohta    schedule 23.01.2012
comment
вы не можете вызывать requestWindowFeature(Window.FEATURE_NO_TITLE) onResume:\ - person Necronet; 11.05.2012

Пожалуйста, установите основную тему активности панели вкладок как android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

person Gangineni    schedule 17.03.2012