2011-12-23 10 views
5

Używam hosta Tab w mojej aplikacji na Androida. Mam ukryty pasek tytułu.Pasek tytułu Android pozostawiając miejsce po wznowieniu aplikacji

Po opuszczeniu aplikacji i wznowieniu jej, mam dziwne zachowanie.

Jeśli przejdę do zakładki z listą aktywności z listView.setAdapter, pasek tytułu jest ukryty, a zajmowana przez niego przestrzeń jest zużywana przez aplikację. Jednakże, jeśli przejdę do dowolnej zakładki bez listView.setAdapter, pasek tytułu zostanie ukryty, ale miejsce, które było przez niego używane, pozostanie w tyle.

Spycha moje karty (które znajdują się w dolnej części ekranu) poza ekranem. Miejsce zostanie ponownie wykorzystane przez moją aplikację, jeśli zmienię ją na inną kartę.

Próbowałem unieważnić większość widocznych widoków w mojej aplikacji bez powodzenia. Poniżej znajduje się mój xml tab_activity. wiele dzięki

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

Oto Manifest

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

Co ciekawe, jeśli mogę użyć poniższy kod w metodzie onResume mojego główną działalność sprawującego tabhost, gdy tost znika, widok jest odświeżony i przestrzeń u góry jest znów zajęta przez moją aplikację. Oczywiście, to nie jest żadna poprawka, ale może pomóc komuś zrozumieć, co się dzieje.

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

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

Mam dokładnie ten sam problem. Znalazłeś rozwiązanie? Czy ktoś ma rozwiązanie? – Inna

+0

Co masz na myśli przez "wznawianie działania za pomocą działania list z listView.setAdapter"? –

+0

Witam Inna. Muszę przyznać. Po dobrym uchwyceniu uszu przez "konsultanta usability" zdałem sobie sprawę, że nigdy nie powinienem ukrywać paska tytułowego, ponieważ użytkownik ma prawo zobaczyć jego sygnał, baterię, powiadomienia e.t.c. Nie ma zbytniej pomocy, jeśli jest to absolutny priory. Przeprosiny. Jednakże, jeśli znajdziesz odpowiedź, byłoby interesujące wiedzieć. –

Odpowiedz

0

chciałbym spróbować ręcznie wywołać requestLayout() i/lub requestWindowFeature(Window.FEATURE_NO_TITLE) w moim onResume() ... ponadto, spróbuj zobaczyć, kiedy jest metoda onMeasure() wezwał do widoku. To jest po prostu z mojej głowy;) mam nadzieję, że to pomaga. Twoje zdrowie!

+1

Nie można wywołać funkcji requestWindowFeature (Window.FEATURE_NO_TITLE) onResume: \ – Necronet

+0

To spowodowałoby błąd kompilacji. – Behnam

0

Podniesione ustawić Główna działalność bar Tab motywu jako android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

Powiązane problemy