2012-11-23 15 views
19

Używam ActionBarSherlock i próbuję ukryć pasek tytułu mojej aplikacji, ale kiedy to robię, otrzymuję NullPointerException podczas uzyskiwania dostępu do ActionBar Jak usunąć/ukryć pasek tytułu? Zwróć uwagę, że nie mam na myśli tytułu paska akcji. Mam na myśli pasek tytułu nad paskiem akcji. Używam mojej aplikacji na urządzeniu z Androidem 2.3.Jak ukryć pasek tytułu podczas korzystania z paska akcji?

Poniżej jest mój kod: (Moja klasa rozszerza SherlockFragmentActivity.)

super.onCreate(savedInstanceState); 
setTheme(R.style.Theme_Sherlock); 
this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
ActionBar actionbar = getSupportActionBar(); 
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //I get the NullPointerException here. 

//... 

setContentView(R.layout.tab_navigation); 
+0

http://stackoverflow.com/questions/9564947/only-display-tabs-in-action-bar – Sush

Odpowiedz

4

znaleźć rozwiązanie na ten jeden. Jeśli zadeklarujesz swój motyw na AndroidManifest.xml, pasek tytułu zniknie sam. Chociaż nie wiem, dlaczego działa tylko po zadeklarowaniu na AndroidManifest.xml, a nie na kodzie.

Powodem wyjątku NullPointerException jest to, że ActionBar jest synonimem TitleBar w wyższych wersjach (ICS i nowsze). Korzystając z biblioteki kompatybilności i ActionBarSherlock, ukrycie TitleBar będzie oznaczać również ukrycie ActionBar.

Poniżej sposób można skonfigurować aplikację, aby użyć motywu Sherlocka: (należy dodać go na tagu aplikacji)

android:theme="@style/Theme.Sherlock" 

Jeśli wiesz, jak ukryć pasek tytułu w kodzie, prosimy zmodyfikuj moją odpowiedź, aby uwzględnić twoją odpowiedź. A jeśli ktokolwiek może wyjaśnić, dlaczego działa tylko na pliku manifestu, a nie na kodzie, gdyby był miły. :)

+0

Wyjaśnienie kodu wobec oczywistego problemu jest w moim [Odpowiedź] (http: // stackoverflow.com/a/15634330/392781). – Bartek

33

ukryć pasek tytułowy dodając następujące linie kodu:

getSupportActionBar().setDisplayShowTitleEnabled(false); 
getSupportActionBar().setDisplayShowHomeEnabled(false); 

nadzieję, że to pomoże :)

+0

Metoda getSupportActionBar() jest niezdefiniowana dla typu – Azahar

+1

@Azahar należy użyć getActionBar(), jeśli nie używasz bibliotek pomocniczych – Khaledvic

+0

Ok. thnx o pomoc – Azahar

0

odpowiedź Arci nie jest całkowicie poprawne. Jeśli czytasz numer Theming documentation, możesz stwierdzić, że:

Motywy należy zdefiniować w manifeście dla całego wniosku lub dla poszczególnych działań. Możesz również zdefiniować motyw w kodzie każdej aktywności przed dzwoniąc pod numer super.onCreate(Bundle). Musi to być zrobione dla każdego działania, w którym rozszerzasz jedną z klas bazowych "Sherlock" i zamierzasz używać paska akcji.

Innymi słowy to byłoby na tyle, aby zamienić dwa pierwsze wiersze oryginalnego kodu:

setTheme(R.style.Theme_Sherlock); 
super.onCreate(savedInstanceState); 
... 
-2

Spróbuj:

setTheme(R.style.Theme_Sherlock_NoActionBar); 
-2
<activity android:name=".xxxxxActivity" 
       android:theme="@style/Theme.Sherlock.NoActionBar"/> 
18

ukryć wszystko pasek tytułu i zachować tylko pasek akcji użyj tego kodu:

final ActionBar actionBar = getActionBar(); 
actionBar.setDisplayShowHomeEnabled(false); 
actionBar.setDisplayShowTitleEnabled(false); 
actionBar.setDisplayUseLogoEnabled(false); 

zadziałało dla mnie

+0

Jeśli używasz układów menu, ustaw je jako android: showAsAction = "never" w menu.xml – panchicore

8

Szukałem na odpowiedź w tej sprawie. Znaleziono jedno rozwiązanie.

actionBar = getActionBar(); 
actionBar.hide(); 

Powyższy fragment usunie tytuł karty i suwak. Mam nadzieję, że to pomoże.

0

Miałem ten sam problem. Żadna z tych odpowiedzi nie zadziałała, wciąż miałem wgląd w pasek tytułu wyświetlany tuż przed załadowaniem Actionbara.

musiałem ustawić aktywny motyw do NoActionBar w manifeście:

android:theme="@style/Theme.Sherlock.NoActionBar" 

a następnie ustawić motyw z powrotem w mojej działalności tuż przed setContentView():

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setTheme(R.style.Theme_Custom); 
    setContentView(R.layout.activity_home); 
} 

Still załadowałem mój niestandardowy motyw i nie widzę już paska tytułu, gdy aktywność zostanie obciążona

0

Jeśli używasz Xamarin. Możesz użyć poniżej.

ActionBar.Hide(); 
Powiązane problemy