pagerslidingtabstrip - Android SlidingTabLayout smooth transition/animation while changing tab doesn't work inside a Fragment -


i'm using google's slidingtablayout class. problem inside activities i've used tabs, there smooth transition while changing tabs. however, same thing doesn't happen if switch same tabs inside fragment. :(. can issue be?

in fragment class, use code initialize slidingtab.

slidingtablayout slidingtablayout = (slidingtablayout) view.findviewbyid(r.id.sliding_tabs);         slidingtablayout.setcustomtabview(r.layout.tab_layout, r.id.tab_layout_icon);         slidingtablayout.setselectedindicatorcolors(getresources().getcolor(r.color.mycolor));         slidingtablayout.setdistributeevenly(true);         slidingtablayout.setviewpager(mpager); 

and slidingtablayout class.

public class slidingtablayout extends horizontalscrollview {     private static final int title_offset_dips = 24;     private static final int tab_view_padding_dips = 16;     private static final int tab_view_text_size_sp = 12;     private final slidingtabstrip mtabstrip;     private int mtitleoffset;     private context context;     private int mtabviewlayoutid;     private int mtabviewtextviewid;     private boolean mdistributeevenly;     private intent intent;     private viewpager mviewpager;     private sparsearray<string> mcontentdescriptions = new sparsearray<string>();     private viewpager.onpagechangelistener mviewpagerpagechangelistener;     private boolean loaded = false;      public slidingtablayout(context context) {         this(context, null);     }      public slidingtablayout(context context, attributeset attrs) {         this(context, attrs, 0);     }      public slidingtablayout(context context, attributeset attrs, int defstyle) {         super(context, attrs, defstyle);         this.context = context;         this.intent = intent;         // disable scroll bar         sethorizontalscrollbarenabled(false);         // make sure tab strips fills view         setfillviewport(true);          mtitleoffset = (int) (title_offset_dips * getresources().getdisplaymetrics().density);          mtabstrip = new slidingtabstrip(context);         addview(mtabstrip, layoutparams.match_parent, layoutparams.wrap_content);     }      //    /** //     * set custom {@link com.google.samples.apps.iosched.ui.widget.slidingtablayout.tabcolorizer} used. //     * //     * if require simple custmisation can use //     * {@link #setselectedindicatorcolors(int...)} achieve //     * similar effects. //     */     public void setcustomtabcolorizer(tabcolorizer tabcolorizer) {         mtabstrip.setcustomtabcolorizer(tabcolorizer);     }      public void setdistributeevenly(boolean distributeevenly) {         mdistributeevenly = distributeevenly;     }      /**      * sets colors used indicating selected tab. these colors treated      * circular array. providing 1 color mean tabs indicated same color.      */     public void setselectedindicatorcolors(int... colors) {         mtabstrip.setselectedindicatorcolors(colors);     }      //    /** //     * set {@link viewpager.onpagechangelistener}. when using {@link com.google.samples.apps.iosched.ui.widget.slidingtablayout} //     * required set {@link viewpager.onpagechangelistener} through method. //     * layout can update it's scroll position correctly. //     * //     * @see viewpager#setonpagechangelistener(viewpager.onpagechangelistener) //     */     public void setonpagechangelistener(viewpager.onpagechangelistener listener) {         mviewpagerpagechangelistener = listener;     }      /**      * set custom layout inflated tab views.      *      * @param layoutresid layout id inflated      * @param textviewid  id of {@link textview} in inflated view      */     public void setcustomtabview(int layoutresid, int textviewid) {         mtabviewlayoutid = layoutresid;         mtabviewtextviewid = textviewid;     }      /**      * sets associated view pager. note assumption here pager content      * (number of tabs , tab titles) not change after call has been made.      */      public void setviewpager(viewpager viewpager) {         mtabstrip.removeallviews();          mviewpager = viewpager;         if (viewpager != null) {             viewpager.setonpagechangelistener(new internalviewpagerlistener());             final sharedpreferences prefs = context.getsharedpreferences("userprofiledata", context.mode_private);             string profileinfo = prefs.getstring("profiledata", null);             populatetabstripparent();          }     }      /**      * create default view used tabs. called if custom tab view not set via      * {@link #setcustomtabview(int, int)}.      */     protected textview createdefaulttabview(context context) {          textview textview = new textview(context);         textview.setgravity(gravity.center);          textview.settextsize(typedvalue.complex_unit_sp, tab_view_text_size_sp);         textview.settypeface(typeface.default_bold);         textview.setlayoutparams(new linearlayout.layoutparams(                 viewgroup.layoutparams.match_parent, viewgroup.layoutparams.wrap_content));          typedvalue outvalue = new typedvalue();         getcontext().gettheme().resolveattribute(android.r.attr.selectableitembackground,                 outvalue, true);         textview.setbackgroundresource(outvalue.resourceid);         textview.setallcaps(true);          int padding = (int) (tab_view_padding_dips * getresources().getdisplaymetrics().density);         textview.setpadding(padding, padding, padding, padding);          return textview;     }      public void populatetabstripparent() {         final pageradapter adapter = mviewpager.getadapter();         final view.onclicklistener tabclicklistener = new tabclicklistener();          view tabview = null;         (int = 0; < adapter.getcount(); i++) {             linearlayout.layoutparams layoutparams = new linearlayout.layoutparams(viewgroup.layoutparams.match_parent, viewgroup.layoutparams.match_parent, 1.0f);              tabview = layoutinflater.from(getcontext()).inflate(r.layout.tab_layout, mtabstrip,                     false);              imageview iconimageview = (imageview) tabview.findviewbyid(r.id.tab_layout_icon);             iconimageview.setimagedrawable(getcontext().getresources().getdrawable(integer.parseint((string) adapter.getpagetitle(i))));              if (mviewpager.getcurrentitem() == i) {                 //iconimageview.setselected(true);             }             tabview.setonclicklistener(tabclicklistener);              mtabstrip.addview(tabview, layoutparams);         }     }      @override     protected void onattachedtowindow() {         super.onattachedtowindow();          if (mviewpager != null) {             scrolltotab(mviewpager.getcurrentitem(), 0);         }     }      private void scrolltotab(int tabindex, int positionoffset) {         final int tabstripchildcount = mtabstrip.getchildcount();         if (tabstripchildcount == 0 || tabindex < 0 || tabindex >= tabstripchildcount) {             return;         }          view selectedchild = mtabstrip.getchildat(tabindex);         if (selectedchild != null) {             int targetscrollx = selectedchild.getleft() + positionoffset;              if (tabindex > 0 || positionoffset > 0) {                 // if we're not @ first child , mid-scroll, make sure obey offset                 targetscrollx -= mtitleoffset;             }              scrollto(targetscrollx, 0);         }     }      //    /** //     * allows complete control on colors drawn in tab layout. set //     * {@link #setcustomtabcolorizer(com.google.samples.apps.iosched.ui.widget.slidingtablayout.tabcolorizer)}. //     */     public interface tabcolorizer {          /**          * @return return color of indicator used when {@code position} selected.          */         int getindicatorcolor(int position);      }      private class internalviewpagerlistener implements viewpager.onpagechangelistener {         private int mscrollstate;          @override         public void onpagescrolled(int position, float positionoffset, int positionoffsetpixels) {             int tabstripchildcount = mtabstrip.getchildcount();             if ((tabstripchildcount == 0) || (position < 0) || (position >= tabstripchildcount)) {                 return;             }              mtabstrip.onviewpagerpagechanged(position, positionoffset);              view selectedtitle = mtabstrip.getchildat(position);             if (position == 0)                 selectedtitle.setselected(true);             else                 mtabstrip.getchildat(0).setselected(false);              int extraoffset = (selectedtitle != null)                     ? (int) (positionoffset * selectedtitle.getwidth())                     : 0;             scrolltotab(position, extraoffset);              if (mviewpagerpagechangelistener != null) {                 mviewpagerpagechangelistener.onpagescrolled(position, positionoffset,                         positionoffsetpixels);             }         }          @override         public void onpagescrollstatechanged(int state) {             mscrollstate = state;              if (mviewpagerpagechangelistener != null) {                 mviewpagerpagechangelistener.onpagescrollstatechanged(state);             }         }          @override         public void onpageselected(int position) {              int tabstripchildcount = mtabstrip.getchildcount();             if ((tabstripchildcount == 0) || (position < 0) || (position >= tabstripchildcount)) {                 return;             }              (int = 0; < mtabstrip.getchildcount(); i++) {                 mtabstrip.getchildat(i).setselected(false);              }              view selectedtitle = mtabstrip.getchildat(position);              selectedtitle.setselected(true);              if (mscrollstate == viewpager.scroll_state_idle) {                 mtabstrip.onviewpagerpagechanged(position, 0f);                 scrolltotab(position, 0);             }              if (mviewpagerpagechangelistener != null) {                 mviewpagerpagechangelistener.onpageselected(position);             }              if (mscrollstate == viewpager.scroll_state_idle) {                 mtabstrip.onviewpagerpagechanged(position, 0f);                 scrolltotab(position, 0);              }              if (mviewpagerpagechangelistener != null) {                 mviewpagerpagechangelistener.onpageselected(position);             }         }      }      private class tabclicklistener implements onclicklistener {         @override         public void onclick(view v) {             (int = 0; < mtabstrip.getchildcount(); i++) {                 if (v == mtabstrip.getchildat(i)) {                     mviewpager.setcurrentitem(i);                      return;                 }             }         }     } 

  mviewpager.setadapter(new samplefragmentpageradapter(                 getchildfragmentmanager(), getactivity())); 

you have use getchildfragmentmanager() instead of getfragmentmanager(). that's all, buddy.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -