2016-02-02 16 views
6

sto usando viewpager e il layout schedaviewpager setCurrentItem non cambiare tablayout colore selezionato

 viewPager.setAdapter(Adapter); 
    tablayout.setupWithViewPager(viewPager); 

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     int cPage; 

     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     } 

     @Override 
     public void onPageSelected(int position) { 


       cPage = position; 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 

ora quando ho Swipe colore selezionato scheda sta cambiando, ma quando chiamo

   viewPager.setCurrentItem(1, true); 

sua non cambiando nuovo layout scheda colore . dire ho 2 schede quando io sono prima che ambiente verde il colore del testo per il 1 ° scheda e quando ho swipe dando 2 ° colore linguetta verde .. ma quando chiamo

  viewPager.setCurrentItem(1, true); 

in questa mia prima scheda non è verde 2 ° scheda

+0

dopo quello che si è tentato – YUVRAJ

+0

qual è la versione di libreria di supporto che si sta utilizzando – kopikaokao

+0

com.android.support:design:23.1.1 – andro

risposta

1

Nella vostra attività:

// init TabLayout 
     TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout); 
     if (mCallFrom.equalsIgnoreCase(ActivityConstantUtils.sCalledFromActPanel)) { 
      // To add Memory 
      tabLayout.addTab(tabLayout.newTab().setText(R.string.add_memory_caption)); 
      tabLayout.addTab(tabLayout.newTab().setText(R.string.add_memory_effects)); 
//   tabLayout.addTab(tabLayout.newTab().setText(R.string.add_memory_frames)); 
     } else { 
      // To add Memory from Recipe & Blog 
      tabLayout.addTab(tabLayout.newTab().setText(R.string.add_memory_caption)); 
      tabLayout.setSelectedTabIndicatorColor(Color.TRANSPARENT); 
     } 
     changeTabsFont(tabLayout); 
     showDivider(tabLayout); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
     final ViewPager viewPager = (ViewPager) getActivity().findViewById(R.id.pager); 
     final PagerAdapter adapter = new PagerAdapter(this.getFragmentManager(), tabLayout.getTabCount()); 
     viewPager.setAdapter(adapter); 
     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       if (tab.getPosition() == 1) { 
        Utils.hideSoftKeyboard(view, getActivity()); 
       } 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }); 

// Stile applica ai tablayout

<style name="ActPanelTabLayout.Theme" parent="Widget.Design.TabLayout"> 
     <item name="tabIndicatorColor">@color/memory_color_80</item>\ 
     <item name="android:textColor">@color/act_tab_black</item> 
     <item name="tabSelectedTextColor">@color/act_tab_selector_text_color</item> 
     <item name="tabTextAppearance">@style/TextAppearance.Jacksonville.ActTab</item> 
    </style> 
+2

il mio problema è quando chiamo setcurrentitme quella volta solo – andro

0

Problema univoco di fronte. Quando impostiamo setCurrentItem. Non cambia la scheda di tablayout. Quindi devi aggiungereOnPageChangeListener su viewpager in cui devi selezionare manualmente la scheda di tablayout per la posizione di viewpager selezionata. Quindi setupWithViewPager.

Nota: setupWithViewPager deve essere impostato solo dopo l'aggiunta di addOnPageChangeListener. Dio solo sa perché. Questo è ciò che ha funzionato. se setupWithViewPager prima, non funziona. Di nuovo, l'Onnipotente lo sa solo.

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
       @Override 
       public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
       } 

       @Override 
       public void onPageSelected(int position) { 
        viewPager.setCurrentItem(position,false); 
        tabLayout.getTabAt(position).select(); 
       } 

       @Override 
       public void onPageScrollStateChanged(int state) { 
       } 
      }); 

      /* 
       NOTE: This is setup after addOnPageChangeListener. Don't know why but this is what works. Otherwise tabLayout.does not select. 
      */ 
      tabLayout.setupWithViewPager(this.viewPager); 
+0

Questo non funziona. –

4

Prova questo ha funzionato per me ...

tabLayout.setScrollPosition(position,0f,true); 
+0

funziona per me. grazie amico. –

0

Questo bug è conosciuto nella libreria di supporto design anche nella versione 24.1.1 esiste, sono stato in grado di trovare un lavoro in giro per questo problema utilizzando un layout coordinatore come il genitore (root) il layout

Problemi correlati