2016-02-29 78 views
2

我是Android编程的新手,我试图通过触摸选项卡标题文本来更改选项卡。这是我的代码无法更改TabLayout中的选项卡

activity_main

<android.support.design.widget.AppBarLayout> 

    <android.support.design.widget.CollapsingToolbarLayout> 

     <ImageView 
      android:id="@+id/image" 
      android:layout_width="fill_parent" 
      android:layout_height="match_parent" 
      android:src="@drawable/test_image" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" 
      android:scaleType="centerCrop" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="top" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" 
      android:background="@android:color/transparent" 
      app:layout_collapseMode="pin" 
      /> 
     <android.support.v7.widget.Toolbar/> 
    </android.support.design.widget.CollapsingToolbarLayout> 

</android.support.design.widget.AppBarLayout> 

Mainactivity.java

tabLayout = (TabLayout) findViewById(R.id.tabs); 
tabLayout.setupWithViewPager(viewPager); 

输出对于该应用是一个片段作为tablayout含有cardview标签。现在,当我接触的标签头,我可以切换到不同的标签我也可以用我的finger.However刷卡片段切换标签,当我加入这个

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 


      CharSequence _header = tab.getText(); 
      Selected_Tab_Header = String.valueOf(_header); 

      if (Selected_Tab_Header == "Tab1") { 
       headerImage.setImageResource(R.drawable.someImage); 

      } 

     } 

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

     } 

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

我不能切换标签的了,即当我触摸标签标题虽然代码被触发(图像更改),但标签不会切换,但用手指滑动标签仍然有效。是否有任何东西缺少我的代码?或者有没有其他办法可以做到这一点?

回答

2

不要忘了在onTabSelectedviewPager.setCurrentItem(tab.getPosition())

public void onTabSelected(TabLayout.Tab tab) { 

     CharSequence _header = tab.getText(); 
     Selected_Tab_Header = String.valueOf(_header); 

     if (Selected_Tab_Header == "Tab1") { 
      headerImage.setImageResource(R.drawable.someImage); 
     } 

     if (viewPager != null) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 
    } 

希望这有助于!

相关问题