Android TabHost Center active Tab
-
26-05-2021 - |
سؤال
Is it possible to change Android Tabs that if you press one, it comes to the center of the TabHost. Only 3 Tabs are visible, doesn't matter how many there are. Like in the Android 4.0 Google Music App! If it is, how would you do that?
Thank you!
المحلول
I did find the answer myself.
If somebody else needs it, this should do it:
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);
}
});
لا تنتمي إلى StackOverflow