2016-02-02 5 views
6

ich bin mit viewpager und Registerkarte Layoutviewpager setCurrentItem nicht ändert tablayout ausgewählte Farbe

 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) { 

     } 
    }); 

jetzt, wenn ich Registerkarte Farbe ausgewählt Swipe ändert sich aber, wenn ich

nennen
   viewPager.setCurrentItem(1, true); 

seine nicht neue Registerkarte Layout zu ändern Farbe . sagen i 2 Tabs haben, wenn ich erste bin es Textfarbe grün für 1. Registerkarte Einstellung, und wenn ich es Swipe 2. Registerkarte Farbe Grün geben .. aber wenn ich

  viewPager.setCurrentItem(1, true); 

in dieser meiner ersten Register ist nicht 2. grün nennen

Registerkarte
+0

Post mit, was Sie – YUVRAJ

+0

versucht, was die Version der Support-Bibliothek ist, dass Sie derzeit – kopikaokao

+0

com.android.support:design:23.1.1 – andro

Antwort

1

In Ihrer Tätigkeit:

// 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) { 

      } 
     }); 

// Stil gelten für 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

mein Problem ist, wenn ich setcurrentitme dieser Zeit rufen nur – andro

0

einzigartiges Problem konfrontiert. Wenn wir setCurrentItem setzen. Es ändert nicht die Tablayout-Registerkarte. Dann müssen Sie auf viewpager addOnPageChangeListener, in dem Sie die tablayout der Registerkarte auszuwählen manuell für ausgewählte viewpager Position. Dann setupWithViewPager.

Hinweis: muss setupWithViewPager nur dann eingestellt werden, nachdem addOnPageChangeListener hinzugefügt. Gott weiß warum. Das hat funktioniert. Wenn ich vorherWithViewPager eingerichtet habe, funktioniert es nicht. Wiederum, allmächtig weiß es nur.

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

Diese funktioniert nicht. –

4

Versuchen Sie dies für mich gearbeitet ...

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

es funktioniert für mich. Danke, Alter, danke. –

0

Dies ist bekannt Fehler in dem Entwurf Support-Bibliothek auch in der Version 24.1.1 es existiert, ich in der Lage war, eine Arbeit um für dieses Problem zu finden durch einen Koordinator Layout als Mutter (root) Layout