Android 设置表格布局的SelectedNavigationItem(位置)
我想使用PageChangeListener更改选项卡,就像使用ActionBar一样Android 设置表格布局的SelectedNavigationItem(位置),android,android-toolbar,Android,Android Toolbar,我想使用PageChangeListener更改选项卡,就像使用ActionBar一样 actionBar.setSelectedNavigationItem(position); 由于我现在正在使用工具栏和Tablayout来显示片段,因此无法在ViewPager中更改onPageSelected的选项卡 private void setupViewPager(ViewPager mViewPager) { mViewPager.setAdapter(mSectionsPagerAd
actionBar.setSelectedNavigationItem(position);
由于我现在正在使用工具栏和Tablayout来显示片段,因此无法在ViewPager中更改onPageSelected的选项卡
private void setupViewPager(ViewPager mViewPager) {
mViewPager.setAdapter(mSectionsPagerAdapter);
// When swiping between different sections, select the corresponding
// tab. We can also use ActionBar.Tab#select() to do this if we have
// a reference to the Tab.
mViewPager
.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
tabLayout.setScrollPosition(position, (float) 2323.22,true);
}
});
// For each of the sections in the app, add a tab to the action bar.
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
// Create a tab with text corresponding to the page title defined by
// the adapter. Also specify this Activity object, which implements
// the TabListener interface, as the callback (listener) for when
// this tab is selected.
tabLayout.addTab(tabLayout.newTab().setText(mSectionsPagerAdapter.getPageTitle(i)));
}
}
这是我的活动代码,可用于选择选项卡
public class MainActivity extends AppCompatActivity {
private PageAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
TextView mTitle = (TextView) toolbar.findViewById(R.id.toolbar_title);
setSupportActionBar(toolbar);
mSectionsPagerAdapter = new PageAdapter(getSupportFragmentManager(), 3);
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (mViewPager.getCurrentItem() == 1) {
Downloads frag1 = (Downloads) mViewPager.getAdapter().instantiateItem(mViewPager, mViewPager.getCurrentItem());
frag1.refersh();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
在OnPageSeletd中,我使用了一个页面引用方法,这样你就可以引用任何页面。试试这个
Pageadater.java
public class PageAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
public PageAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
Fragment f = null;
switch (position) {
case 0:
f = new InstaDown();
break;
case 1:
f = new Downloads();
break;
case 2:
f = new guide();
break;
}
return f;
}
@Override
public CharSequence getPageTitle(int position) {
CharSequence f = null;
switch (position) {
case 0:
f = "Home";
break;
case 1:
f = "Downloads";
break;
case 2:
f = "Tutorial";
break;
}
return f;
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
事实上,问题是你们的标签不能在viewpager中滚动?@kishan那个么我应该如何在onPageSelected中实现它呢。我希望在页面上显示选项卡的位置已选中。请稍候,我将发布我的代码,代码的工作对我来说很好。@kishan感谢您等待您的代码:)什么是下载?什么是下载?这是我的片段。我想引用的片段。这只是下载片段中的refresh方法。算了吧。我想你制作了你的pageadapter,所以应用代码它可以工作。它仍然不工作。我想更改所选页面上的选项卡。我可以查看您的页面适配器吗?
public class PageAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
public PageAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
Fragment f = null;
switch (position) {
case 0:
f = new InstaDown();
break;
case 1:
f = new Downloads();
break;
case 2:
f = new guide();
break;
}
return f;
}
@Override
public CharSequence getPageTitle(int position) {
CharSequence f = null;
switch (position) {
case 0:
f = "Home";
break;
case 1:
f = "Downloads";
break;
case 2:
f = "Tutorial";
break;
}
return f;
}
@Override
public int getCount() {
return mNumOfTabs;
}
}