2

По какой-то причине, когда я меняю ориентацию устройства, панель действий неправильно перестраивается, а вкладки (иногда показанные как счетчик) перекрываются с другими пунктами меню.Вкладки панели действий Перекрытие на экране вращения

У меня есть 4 вкладки (работает отлично до 3) (я использую Actionbarsherlock, если это необходимо) На портрете я использую изображения вместо текста для вкладок.

Вот скриншот объяснить:

http://i39.tinypic.com/2vkzuix.jpg

А вот код я использую:

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

    setContentView(R.layout.activity_main); 

    // Set up the action bar. 
    actionBar = getSupportActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    // Create the adapter that will return a fragment for each of the three 
    // primary sections of the app. 
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

    // Set up the ViewPager with the sections adapter. 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setEnabled(false); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 
    mViewPager.setOffscreenPageLimit(3); 

    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
     @Override 
     public void onPageSelected(int position) { 
      actionBar.setSelectedNavigationItem(position); 
     } 
    }); 

    RebuildActionBar(); 
} 

public void RebuildActionBar(){ 
    if(actionBar.getTabCount()>0) actionBar.removeAllTabs(); 
    // For each of the sections in the app, add a tab to the action bar. 
    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 
     if(screen_width>screen_height){ 
      actionBar.addTab(actionBar.newTab() 
       .setText(mSectionsPagerAdapter.getPageTitle(i)) 
       .setTabListener(this)); 
     } else { 
      actionBar.addTab(actionBar.newTab() 
        .setIcon(mSectionsPagerAdapter.getPageIcon(i)) 
        .setTabListener(this)); 
     } 
    } 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    RebuildActionBar(); 
} 

В манифесте (только в случае, если вы спросите, у меня есть это работает отлично):

<activity 
    ... 
    android:configChanges="orientation|keyboardHidden|keyboard|screenSize" 
/> 

1) Мне нужно, конечно , чтобы очистить оваскуляцию.

И 2) Если вы можете помочь мне отключить счетчик, еще лучше. Мне нужны только вкладки, даже если мне нужно использовать изображения в обеих ориентациях.

ответ

3

ActionBarSherlock - это уровень совместимости, который существует внутри представления содержимого активности. Это немного отличается от собственной панели действий, которая существует внутри окна, но вне обычного просмотра содержимого.

Из-за этого он не может правильно воссоздать себя, когда вы декларируете в манифесте, что вы обрабатываете изменения ориентации. Если вы не разрешаете АБС воссоздавать представления панели действий, то почти всегда появляются такие артефакты, как то, что вы видите.

TL; ActionBarSherlock не работает с configChanges="orientation".

+0

Спасибо Джейк. Теперь я это помню. Было бы здорово, если бы вы могли найти способ работы с configChanges (подстройка rebuildTabs). Ты мужчина! – Dandy

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