2012-03-26 84 views
2

是否有可能更改Android标签,如果你按一个,它来到TabHost的中心。只有3个标签可见,无所谓。就像在Android 4.0谷歌音乐应用程序! 如果是这样,你会怎么做?Android TabHost中心活动标签

谢谢!

回答

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 2015-04-01 04:45:14

+0

高兴它为你工作:) – user754730 2015-04-01 07:51:57