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是一個兼容性層,它存在於活動的內容視圖中。這與存在於窗口內但在普通內容視圖之外的本機操作欄有所不同。

由於這個事實,當您在清單中聲明處理方向更改時,無法正確重新創建自己。如果您阻止ABS重新創建動作欄視圖,則幾乎總是會有像您所描繪的那樣的明顯的構件。

TL; DR: ActionBarSherlock不適用於configChanges="orientation"

+0

謝謝傑克。我現在記得這一點。如果你能找到使用configChanges(rebuildTabs方法)的方法,那將是非常棒的。你是男人! – Dandy