2012-11-26 12 views
7

Mam pasek czynności z logo, tytułem, 2 zakładkami i funkcją wyszukiwania. Na telefonie (3,5"), wszystko działa bez zarzutu. actionbar ma 2 linie. Tytułowy logo i funkcja wyszukiwania pojawiają się na pierwszej linii i wypustki wyświetlane, na drugiej linii. enter image description herePasek przycisków konwertuje karty do nawigacji listy, jeśli nie ma miejsca.

Na moim tablecie (7 ") wszystko jest pokazane w jednej linii. Po kliknięciu ikony wyszukiwania karty zostaną przekonwertowane na listę. tabs as list navigation

Jak mogę podzielić (Sherlock) actionbar w 2 linie na mojej 7" tabblet? Albo czy istnieje inny sposób na rozwiązanie tego problemu?

+0

to wraca do zakładek po zamknięciu wejścia wyszukiwarki? –

+0

Tak. Kiedy styl tło kart, tło zniknie, gdy rozwijam widok wyszukiwania. (więc jestem pewien, że to już lista akcji i nie ma już tabbar) – Rickyrick

Odpowiedz

4

znalazłem rozwiązanie, aby oddzielić występy w kodzie .

private void embeddedTabs(Object actionBar, Boolean embed_tabs) { 


try { 

     if (actionBar instanceof ActionBarWrapper) { 
      //ICS and forward 
      try { 
       Field actionBarField = actionBar.getClass().getDeclaredField("mActionBar"); 
       actionBarField.setAccessible(true); 
       actionBar = actionBarField.get(actionBar); 
      } catch (Exception e) { 
       Log.e("", "Error enabling embedded tabs", e); 
     } 
    } 
    Method setHasEmbeddedTabsMethod = actionBar.getClass().getDeclaredMethod("setHasEmbeddedTabs", boolean.class); 
    setHasEmbeddedTabsMethod.setAccessible(true); 
    setHasEmbeddedTabsMethod.invoke(actionBar, embed_tabs); 
} catch (Exception e) { 
    Log.e("", "Error marking actionbar embedded", e); 
} 

}

Ale teraz mam nowy problem. Karty nie wypełnić umieszczenie zakładek całkowicie. Actionbar tabs don't fill the tabbar

5

W ActionBarSherlock istnieje wartość boolowska (abs__action_bar_embed_tabs), która określa, czy karty powinny zostać osadzone w pasku akcji, a ta wartość jest przechowywana w dwóch plikach.

  • W wartościach/abs__bools.xml. To fałsz.
  • In values-w480/abs__bools.xml. To prawda.

Oznacza to, że zakładki będą osadzane tylko wtedy, gdy szerokość urządzenia będzie większa niż 480dp.

Jeśli chcesz kontrolować wszystko sam, możesz po prostu utworzyć wartości-w480 we własnym projekcie i ustawić abs__action_bar_embed_tabs na false, aby zastąpić wartość w projekcie bibliotecznym.

+0

dzięki. to wyjaśnia takie dziwne zachowanie sherlocku paska działań. – grine4ka

+0

masz na myśli nazwę folderu "values-w480dp", zgodnie z https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock/res/values-w480dp/abs__bools.xml – balint

+1

mimo to: nie używać zgodnie z http : //stackoverflow.com/questions/13581155/how-does-action-bar-embed-tabs-exactly-work-in-android – balint

1

ta metoda działa dobrze dla mnie:

wystarczy umieścić metodę nawigacji po dodaniu dodawanie zakładek:

... // adding tabs 

bar.setNavigationMode(ActionBar.Navigation_mode_tabs);

Powiązane problemy