Skip to content

Instantly share code, notes, and snippets.

@nitindhar7
Created January 31, 2012 03:22
Show Gist options
  • Save nitindhar7/1708529 to your computer and use it in GitHub Desktop.
Save nitindhar7/1708529 to your computer and use it in GitHub Desktop.
An activity to demonstrate how custom tabs can be built
public class TabTutorialActivity extends TabActivity {
// Divide 1.0 by # of tabs needed
// In this case: 1.0/2 => 0.5
private static final LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 0.5f);
private static TabHost tabHost;
private static TabHost.TabSpec spec;
private static Intent intent;
private static LayoutInflater inflater;
private View tab;
private TextView label;
private TextView divider;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Get inflator so we can start creating the custom view for tab
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Get tab manager
tabHost = getTabHost();
// This converts the custom tab view we created and injects it into the tab widget
tab = inflater.inflate(R.layout.tab, getTabWidget(), false);
// Mainly used to set the weight on the tab so each is equally wide
tab.setLayoutParams(params);
// Add some text to the tab
label = (TextView) tab.findViewById(R.id.tabLabel);
label.setText("HOME");
// Show a thick line under the selected tab (there are many ways to show
// which tab is selected, I chose this)
divider = (TextView) tab.findViewById(R.id.tabSelectedDivider);
divider.setVisibility(View.VISIBLE);
// Intent whose generated content will be added to the tab content area
intent = new Intent(TabTutorialActivity.this, TabContentActivity.class);
// Just some data for the tab content activity to use (just for demonstrating changing content)
intent.putExtra("content", "Content for HOME");
// Finalize the tabs specification
spec = tabHost.newTabSpec("home").setIndicator(tab).setContent(intent);
// Add the tab to the tab manager
tabHost.addTab(spec);
// Add another tab
tab = inflater.inflate(R.layout.tab, getTabWidget(), false);
tab.setLayoutParams(params);
label = (TextView) tab.findViewById(R.id.tabLabel);
label.setText("USERS");
intent = new Intent(TabTutorialActivity.this, TabContentActivity.class);
intent.putExtra("content", "Content for USERS");
spec = tabHost.newTabSpec("users").setIndicator(tab).setContent(intent);
tabHost.addTab(spec);
// Listener to detect when a tab has changed. I added this just to show
// how you can change UI to emphasize the selected tab
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tag) {
// reset some styles
clearTabStyles();
View tabView = null;
// Use the "tag" for the tab spec to determine which tab is selected
if (tag.equals("home")) {
tabView = getTabWidget().getChildAt(0);
}
else if (tag.equals("users")) {
tabView = getTabWidget().getChildAt(1);
}
tabView.findViewById(R.id.tabSelectedDivider).setVisibility(View.VISIBLE);
}
});
}
private void clearTabStyles() {
for (int i = 0; i < getTabWidget().getChildCount(); i++) {
tab = getTabWidget().getChildAt(i);
tab.findViewById(R.id.tabSelectedDivider).setVisibility(View.GONE);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment