2012-03-26 3 views
2

Можно ли изменить вкладки Android, если вы нажмете один, он попадет в центр TabHost. Только 3 вкладки видны, неважно, сколько их там. Как в Android 4.0 Google Music App! Если да, то как бы вы это сделали?Android TabHost Center active Tab

Спасибо!

ответ

6

Я сам нашел ответ.
Если кто-то нуждается в этом, это должно сделать это:

final HorizontalScrollView mHorizontalScrollView; 
    float scale = getResources().getDisplayMetrics().density; 
    final double tabWidth = (int) (150 * scale + 0.5f); 

    for (int i = 0; i < tabHost.getTabWidget().getTabCount(); i++) { 
     tabHost.getTabWidget().getChildTabViewAt(i).getLayoutParams().width = (int) tabWidth; 
    } 

    final double screenWidth = getWindowManager().getDefaultDisplay() 
      .getWidth(); 
    mHorizontalScrollView = (HorizontalScrollView) findViewById(R.id.hscrollview); 

    tabHost.setOnTabChangedListener(new OnTabChangeListener() { 

     @Override 
     public void onTabChanged(String tabId) { 
      int nrOfShownCompleteTabs = ((int) (Math.floor(screenWidth 
        /tabWidth) - 1)/2) * 2; 
      int remainingSpace = (int) ((screenWidth - tabWidth - (tabWidth * nrOfShownCompleteTabs))/2); 

      int a = (int) (tabHost.getCurrentTab() * tabWidth); 
      int b = (int) ((int) (nrOfShownCompleteTabs/2) * tabWidth); 
      int offset = (a - b) - remainingSpace; 

      mHorizontalScrollView.scrollTo(offset, 0); 
     } 
    }); 
+0

благодаря тонны buddy.u сохраненными мой день :) – Nevaeh

+0

рад, что работал для вас :) – user754730