2

어떤 이유로 장치의 방향을 변경하면 작업 표시 줄이 올바르게 다시 작성되지 않고 탭 (때로는 회 전자로 표시됨)이 다른 메뉴 항목과 겹칩니다.작업 표시 줄 탭 화면 회전시 겹침

4 개 탭이 있습니다 (관련이있는 경우 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) 물론 필요합니다. , ovelapping를 깨끗하게하기 위해.

2) 경우에 따라 회 전자를 사용 중지하는 데 도움이 될 수 있습니다. 두 방향에서 이미지를 사용해야하는 경우에도 탭 만 있으면됩니다.

답변

3

ActionBarSherlock은 활동의 콘텐츠보기 내에있는 호환성 레이어입니다. 이것은 창 내부에 있지만 기본 콘텐트 뷰 바깥에 존재하는 네이티브 액션 바와는 조금 다릅니다.

오리 엔테이션 변경 사항을 처리한다는 것을 매니페스트에 선언하면이 사실 때문에 제대로 다시 만들 수 없습니다. ABS가 액션 바보기를 재생성하지 못하도록하면 그림과 같은 거의 항상 눈에 띄는 아티팩트가 있습니다.

TL : DR : ActionBarSherlock이 configChanges="orientation"과 작동하지 않습니다.

+0

감사합니다. Jake. 나는 그것을 기억한다. configChanges (rebuildTabs 접근법)로 작업하는 방법을 찾을 수 있다면 좋을 것입니다. 너는 남자 야! – Dandy

관련 문제