SHARE
TWEET

Tab Fragment Tutorial - Classes - SimpleTabDefinition.java

ncosentino Oct 30th, 2013 1,134 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Blog Post:
  3.  * http://devleader.ca/2013/11/04/fragments-tabbed-android-user-interface
  4.  *
  5.  * Layouts:
  6.  * activity_main.xml: http://pastebin.com/kj8M38Ze
  7.  * fragment_tabs.xml: http://pastebin.com/0b7HAeAK
  8.  * simple_tab.xml: http://pastebin.com/9SqLbS0X
  9.  *
  10.  * Classes:
  11.  * MainActivity.java: http://pastebin.com/eBv3H775
  12.  * SimpleTabDefinition.java: http://pastebin.com/wW3WCcy9
  13.  * TabDefinition.java: http://pastebin.com/KSRV2f3U
  14.  * TabsFragment.java: http://pastebin.com/9Asv7AVH
  15.  */
  16. package com.devleader.tab_fragment_tutorial;
  17.  
  18. import android.support.v4.app.Fragment;
  19. import android.view.Gravity;
  20. import android.view.LayoutInflater;
  21. import android.view.View;
  22. import android.view.ViewGroup;
  23. import android.widget.LinearLayout;
  24. import android.widget.TextView;
  25. import android.widget.LinearLayout.LayoutParams;
  26.  
  27. /**
  28.  * A class that defines a simple tab.
  29.  */
  30. public class SimpleTabDefinition extends TabDefinition {
  31.         //
  32.         // Fields
  33.         //
  34.         private final int _tabTitleResourceId;
  35.         private final int _tabTitleViewId;
  36.         private final int _tabLayoutId;
  37.         private final Fragment _fragment;
  38.        
  39.         //
  40.         // Constructors
  41.         //
  42.         /**
  43.          * The constructor for {@link SimpleTabDefinition}.
  44.          * @param tabContentViewId The layout ID of the contents to use when the tab is active.
  45.          * @param tabLayoutId The ID of the layout to use when inflating the tab {@link View}.
  46.          * @param tabTitleResourceId The string resource ID for the title of the tab.
  47.          * @param tabTitleViewId The layout ID for the title of the tab.
  48.          * @param fragment The {@link Fragment} used when the tab is active.
  49.          */
  50.         public SimpleTabDefinition(int tabContentViewId, int tabLayoutId, int tabTitleResourceId, int tabTitleViewId, Fragment fragment) {
  51.                 super(tabContentViewId);
  52.                
  53.                 _tabLayoutId = tabLayoutId;
  54.                 _tabTitleResourceId = tabTitleResourceId;
  55.                 _tabTitleViewId = tabTitleViewId;
  56.                 _fragment = fragment;
  57.         }
  58.        
  59.         //
  60.         // Exposed Members
  61.         //
  62.         @Override
  63.         public Fragment getFragment() {
  64.                 return _fragment;
  65.         }
  66.        
  67.         @Override
  68.         public View createTabView(LayoutInflater inflater, ViewGroup tabsView) {
  69.                 // we need to inflate the view based on the layout id specified when
  70.                 // this instance was created.
  71.                 View indicator = inflater.inflate(
  72.                         _tabLayoutId,
  73.             tabsView,
  74.             false);
  75.                
  76.                 // set up the title of the tab. this will populate the text with the
  77.                 // string defined by the resource passed in when this instance was
  78.                 // created. the text will also be centered within the title control.
  79.         TextView titleView = (TextView)indicator.findViewById(_tabTitleViewId);
  80.         titleView.setText(_tabTitleResourceId);
  81.         titleView.setGravity(Gravity.CENTER);
  82.        
  83.         // ensure the control we're inflating is layed out properly. this will
  84.         // cause our tab titles to be placed evenly weighted across the top.
  85.                 LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
  86.                         LayoutParams.WRAP_CONTENT,
  87.                         LayoutParams.WRAP_CONTENT);
  88.                 layoutParams.weight = 1;
  89.         indicator.setLayoutParams(layoutParams);
  90.        
  91.         return indicator;
  92.         }
  93. }
RAW Paste Data
Top