我有一个ChipGroup,里面有5个筹码。我有一个包含5页的视图寻呼机。对于我选择的芯片,应加载相应的页面(片段)。如何在Android中链接ViewPager和ChipGroup?
将app:singleSelection="true"
设置为您的芯片组XML,请参考this并像这样设置ViewPager
private void setViewPager() {
mPagerAdapter = new PagerAdapter(getSupportFragmentManager());
if (mViewPagerGetStarted != null) {
mViewPagerGetStarted.setAdapter(mPagerAdapter);
mViewPagerGetStarted.addOnPageChangeListener(this);
mViewPagerGetStarted.setOffscreenPageLimit(4);
mTabLayoutGetStarted.setupWithViewPager(mViewPagerGetStarted);
}
ArrayList<String> categoryList = new ArrayList<>();
int numberOfFrag = mPagerAdapter.getCount();
for (int i = 0; i < numberOfFrag; i++) {
categoryList.add(mPagerAdapter.getPageTitle(i).toString());
}
addChipsToChipGroup(categoryList);
}
然后使用addChipsToChipGroup(categoryList);
将芯片动态添加到您的芯片组中>
private void addChipsToChipGroup(List<String> items) { if (items.size() >= 1) { for (int i = 0; i < items.size(); i++) { Chip chip = new Chip(mContext); chip.setId(i); ChipDrawable chipDrawable = ChipDrawable.createFromAttributes(this, null, 0, R.style.ChipTextStyle); chip.setCloseIconTint(Utils.ColorStateListFromIntColor(mColorPrimary)); chip.setText(items.get(i)); chip.setTextColor(mColorPrimary); chip.setChipDrawable(chipDrawable); chip.setChipBackgroundColor(Utils.ColorStateListFromIntColor(mWhiteColor)); chip.setChipStrokeColor(Utils.ColorStateListFromIntColor(mColorPrimary)); chip.setChipStrokeWidth(2f); mChipGroup.addView(chip); } } }
最后设置为芯片组上已检查的已更改侦听器
mChipGroup.setOnCheckedChangeListener((group, checkedId) -> mViewPagerGetStarted.setCurrentItem(checkedId,true));
style.xml:
<style name="ChipTextStyle" parent="Widget.MaterialComponents.Chip.Choice">
<item name="android:textSize">13sp</item>
<item name="android:textColor">@color/colorPrimary</item>
<item name="android:padding">5dp</item>
<item name="checkedIconEnabled">false</item>
<item name="checkedIcon">@null</item>
<item name="closeIconTint">@color/colorPrimary</item>
</style>