Android viewPager不响应选项卡单击
这是我的活动Android viewPager不响应选项卡单击,android,android-viewpager,android-tablayout,Android,Android Viewpager,Android Tablayout,这是我的活动 public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private TabLayout tablayout; private int[] tableIcons = {android.R.drawable.ic_menu_camera, android.R.drawable.ic_menu_add, android.R.drawab
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private TabLayout tablayout;
private int[] tableIcons = {android.R.drawable.ic_menu_camera,
android.R.drawable.ic_menu_add, android.R.drawable.ic_media_next};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewpager);
tablayout = (TabLayout) findViewById(R.id.tab);
setUpwithviewpager(viewPager);
tablayout.setupWithViewPager(viewPager);
tablayout.getTabAt(0).setIcon(tableIcons[0]);
tablayout.getTabAt(1).setIcon(tableIcons[1]);
tablayout.getTabAt(2).setIcon(tableIcons[2]);
tablayout.setTabMode(TabLayout.MODE_FIXED);
}
public void setUpwithviewpager(ViewPager viewpager) {
ViewPageradapter adapter = new ViewPageradapter(getSupportFragmentManager());
adapter.addFragment(OneFragment.newInstance("1"), "one");
adapter.addFragment(TwoFragment.newInstance("2"), "two");
adapter.addFragment(ThreeFragment.newInstance("3"), "three");
viewpager.setAdapter(adapter);
}
}
这是布局xml文件
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
</android.support.design.widget.AppBarLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMode="fixed"></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"></android.support.v4.view.ViewPager></android.support.design.widget.CoordinatorLayout>
更改viewpager时,我的TableLayout没有响应,单击选项卡时,viewpager也没有响应。我不知道为什么,我找不到解决此问题的方法。您需要在选项卡布局中添加选项卡侦听器,在viewPager中添加onPageChangeListener。这通常是通过
ActionBar.TabListener
和ViewPager.OnPageChangeListener
完成的。请参阅上的Android文章
你需要像这样的东西
// Create a tab listener that is called when the user changes tabs.
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
// When the tab is selected, switch to the
// corresponding page in the ViewPager.
viewpager.setCurrentItem(tab.getPosition());
}
及
请尝试以下代码:
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
这个问题也影响了我好几个小时。对我起作用的是使我的
ViewPagerAdapter
扩展FragmentStatePagerAdapter
而不是FragmentPagerAdapter
。我希望这有帮助
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});