2012-03-26 21 views
2

Ist es möglich, Android Tabs zu ändern, wenn Sie eine drücken, kommt es in die Mitte des TabHost. Nur 3 Tabs sind sichtbar, egal wie viele es sind. Wie in der Android 4.0 Google Music App! Wenn ja, wie würdest du das machen?Android TabHost Center aktiv Registerkarte

Vielen Dank!

Antwort

6

Ich habe die Antwort selbst gefunden.
Wenn jemand anderes es braucht, das sollte es tun:

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

Dank einer Tonne buddy.u mein Tag gerettet :) – Nevaeh

+0

Froh, dass es für Sie gearbeitet :) – user754730

Verwandte Themen