2016-04-14 9 views
0

私はandroid.support.design.widget.TabLayoutでviewPagerを使用しています。私のXMLは、私のtabListenerは、私が要約すると戻るボタンとViewPager

if (mViewPager.getCurrentItem() != 0) { 
    mViewPager.setCurrentItem(mViewPager.getCurrentItem() - 1, true); 
} 

に従うようonBackPressedメソッドをオーバーライドしてい

tabLayout.setOnTabSelectedListener(
       new TabLayout.ViewPagerOnTabSelectedListener(mViewPager) { 
        @Override 
        public void onTabSelected(TabLayout.Tab tab) { 
         super.onTabSelected(tab); 
         int position = tab.getPosition(); 
        mViewPager.setCurrentItem(position); 

        String tab0TextUnSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.white) + "'> " + getResources().getString(R.string.home_tab1) + " </font>"; 
        String tab1TextUnSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.white) + "'> " + getResources().getString(R.string.home_tab2) + "</font>"; 
        String tab2TextUnSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.white) + "'> " + getResources().getString(R.string.home_tab3) + "</font>"; 
        String tab3TextUnSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.white) + "'> " + getResources().getString(R.string.home_tab4) + "</font>"; 
        String tab4TextUnSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.white) + "'> " + getResources().getString(R.string.home_tab5) + "</font>"; 


        String tab0TextSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.light_green) + "'> " + getResources().getString(R.string.home_tab1) + " </font>"; 
        String tab1TextSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.light_green) + "'> " + getResources().getString(R.string.home_tab2) + "</font>"; 
        String tab2TextSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.light_green) + "'> " + getResources().getString(R.string.home_tab3) + "</font>"; 
        String tab3TextSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.light_green) + "'> " + getResources().getString(R.string.home_tab4) + "</font>"; 
        String tab4TextSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.light_green) + "'> " + getResources().getString(R.string.home_tab5) + "</font>"; 

        TabLayout.Tab tab0 = tabLayout.getTabAt(0); 
        TabLayout.Tab tab1 = tabLayout.getTabAt(1); 
        TabLayout.Tab tab2 = tabLayout.getTabAt(2); 
        TabLayout.Tab tab3 = tabLayout.getTabAt(3); 
        TabLayout.Tab tab4 = tabLayout.getTabAt(4); 


        if (tab0 != null) { 
         tab0.setIcon(R.drawable.ic_home_profile_unselected); 
         tab0.setText(Html.fromHtml(tab0TextUnSelected)); 
        } 

        if (tab1 != null) { 
         tab1.setIcon(R.drawable.ic_home_rewards_unselected); 
         tab1.setText(Html.fromHtml(tab1TextUnSelected)); 
        } 

        if (tab2 != null) { 
         tab2.setIcon(R.drawable.ic_home_gallups_unselected); 
         tab2.setText(Html.fromHtml(tab2TextUnSelected)); 
        } 

        if (tab3 != null) { 
         tab3.setIcon(R.drawable.ic_home_statistics_unselected); 
         tab3.setText(Html.fromHtml(tab3TextUnSelected)); 
        } 

        if (tab4 != null) { 
         tab4.setIcon(R.drawable.ic_home_settings_unselected); 
         tab4.setText(Html.fromHtml(tab4TextUnSelected)); 
        } 

        if (position == 0) { 
         if (tab0 != null) { 
          tab0.setIcon(R.drawable.ic_home_profile_selected); 
          tab0.setText(Html.fromHtml(tab0TextSelected)); 
         } 
        } else if (position == 1) { 
         if (tab1 != null) { 
          tab1.setIcon(R.drawable.ic_home_rewards_selected); 
          tab1.setText(Html.fromHtml(tab1TextSelected)); 
         } 
        } else if (position == 2) { 
         if (tab2 != null) { 
          tab2.setIcon(R.drawable.ic_home_gallups_selected); 
          tab2.setText(Html.fromHtml(tab2TextSelected)); 
         } 
        } else if (position == 3) { 
         if (tab3 != null) { 
          tab3.setIcon(R.drawable.ic_home_statistics_selected); 
          tab3.setText(Html.fromHtml(tab3TextSelected)); 
         } 
        } else if (position == 4) { 
         if (tab4 != null) { 
          tab4.setIcon(R.drawable.ic_home_settings_selected); 
          tab4.setText(Html.fromHtml(tab4TextSelected)); 
         } 
        } 

       } 


      }); 

ある

mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

     mViewPager = (ViewPager) findViewById(R.id.home_container); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 
     mViewPager.setPagingEnabled(false); 
     mViewPager.setOffscreenPageLimit(5); 

     tabLayout = (TabLayout) findViewById(R.id.home_tabs); 
     tabLayout.setTabTextColors(ContextCompat.getColorStateList(this, R.color.color_home_tabs)); 
     tabLayout.setupWithViewPager(mViewPager); 

以下のように私はviewPagerを設定

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/home_container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="@dimen/custom_tab_layout_height" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

     <!-- tabs --> 
     <android.support.design.widget.TabLayout 
      android:id="@+id/home_tabs" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/custom_tab_layout_height" 
      android:layout_alignParentBottom="true" 
      app:tabGravity="fill" 
      android:background="@color/light_blue_low_opacity" 
      app:tabIndicatorHeight="0dp" 
      app:tabMode="fixed" 
      app:tabPaddingEnd="0dp" 
      app:tabPaddingStart="0dp" 
      app:tabSelectedTextColor="@color/light_green" 
      app:tabTextAppearance="@style/HomeTabsTextAppearance" 
      app:tabTextColor="@color/white" /> 

    </RelativeLayout> 

です、私は私とタブがあります断罪とテキスト。タブが選択されると、アイコンが変更され、テキストが緑色に変わります。タブが選択されていない場合、アイコンが変更され、テキストが白色に変わります。これは、ユーザーがタブをクリックしたときにうまくいきました。ユーザーが戻るボタンをクリックすると、アイコンとテキストの色は正しく変更されますが、前のタブではテキストは緑色のままです。私が正しくあなたの問題を理解していますif文の後に

super.onBackPressed(); 

を呼び出そうと

答えて

3

私はsuper.onBackPressed()を使用している場合、それは私の活動をクローズ

@Override 
    public void onBackPressed() { 

     if (viewPager.getCurrentItem() != 0) { 
      viewPager.setCurrentItem(viewPager.getCurrentItem() - 1,false); 
     }else{ 
      finish(); 
     } 

    } 
+0

スムーススクロールのための2番目のパラメータです..とにかく私はテストしてOMGが働いた – user4292106

+0

私は理由を理解できません.. – user4292106

+0

それは本当にあなたのために働いた? –

1

ません確認してください。

+0

、これを試してみてください。 – user4292106

0

ViewPagerには、選択したタブを変更するためのOnPageChangeListenerが必要です。

mViewPager.setOnPageChangeListener(
     new ViewPager.SimpleOnPageChangeListener() { 
      @Override 
      public void onPageSelected(int position) { 
       // When swiping between pages, select the 
       // corresponding tab. 
       getActionBar().setSelectedNavigationItem(position); 
      } 
     }); 
... 
+0

setOnPageChangeListenerは非推奨です – user4292106

+0

また、私のアプリがクラッシュする – user4292106

+0

代わりにaddOnPageChangeListenerを使用してください。 –