2013-11-18 3 views

ответ

2

используется следующая функцией, которая заставит показать сложенную вкладку

private void forceStackedTabs(ActionBar ab) 
    { 
     try 
     { 
      if (ab instanceof ActionBarImpl) 
      { 
       // Pre-ICS 
       disableEmbeddedTabs(ab); 
      } 
      else if (ab instanceof ActionBarWrapper) 
      { 
       // ICS 
       try 
       { 
        Field abField = ab.getClass().getDeclaredField("mActionBar"); 
        abField.setAccessible(true); 
        disableEmbeddedTabs(abField.get(ab)); 
       } 

       catch (Exception e) 
       { 
        e.printStackTrace(); 
       } 
      } 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

private void disableEmbeddedTabs(Object ab) 
    { 
     try 
     { 
      Method setHasEmbeddedTabsMethod = ab.getClass().getDeclaredMethod("setHasEmbeddedTabs", boolean.class); 
      setHasEmbeddedTabsMethod.setAccessible(true); 
      setHasEmbeddedTabsMethod.invoke(ab, false); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
+0

я прокомментировал, если-то еще, если, потому что я не konw, что вы имели в виду ActionBarImpl и ActionBarWrapper, и он работает. Благодаря! (Если вы хотите объяснить это мне, что было бы замечательно: D) – RominaV

+0

Эй, у меня есть комментарий относительно того же. До того, как ICS 4.0 ActionBar был экземпляром класса ActionBarImpl и из ICS, это экземпляр класса ActionBarWrapper. Проверьте эту функциональность на разных ОС. – Sandeep

+0

СПАСИБО! Ваш код работает хорошо для меня. Дополнительное примечание: я думаю, ActionBarWrapper применяется только в том случае, если вы используете библиотеку ActionBarSherlock. В моем случае я не делаю этого, а реализация по умолчанию для Android - его внутренний класс ActionBarImpl. –

Смежные вопросы