帮我安卓用Java写一个TabView,选中时文字和图片为蓝色
时间: 2023-04-09 09:03:08 浏览: 111
好的,我可以回答这个问题。以下是一个简单的示例代码,可以实现你所描述的效果:
```
public class MainActivity extends AppCompatActivity {
private TabLayout mTabLayout;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTabLayout = findViewById(R.id.tab_layout);
mViewPager = findViewById(R.id.view_pager);
// 设置 TabLayout 的模式为可滚动
mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
// 创建 Tab 对应的 Fragment
List<Fragment> fragments = new ArrayList<>();
fragments.add(new Fragment1());
fragments.add(new Fragment2());
fragments.add(new Fragment3());
fragments.add(new Fragment4());
fragments.add(new Fragment5());
// 创建 Tab 对应的标题和图标
List<String> titles = new ArrayList<>();
titles.add("Tab1");
titles.add("Tab2");
titles.add("Tab3");
titles.add("Tab4");
titles.add("Tab5");
List<Integer> icons = new ArrayList<>();
icons.add(R.drawable.ic_tab1);
icons.add(R.drawable.ic_tab2);
icons.add(R.drawable.ic_tab3);
icons.add(R.drawable.ic_tab4);
icons.add(R.drawable.ic_tab5);
// 创建 Tab 对应的适配器
TabAdapter adapter = new TabAdapter(getSupportFragmentManager(), fragments, titles, icons);
mViewPager.setAdapter(adapter);
// 将 TabLayout 和 ViewPager 绑定起来
mTabLayout.setupWithViewPager(mViewPager);
// 设置 Tab 的图标和文字颜色
int selectedColor = getResources().getColor(R.color.blue);
for (int i = 0; i < titles.size(); i++) {
TabLayout.Tab tab = mTabLayout.getTabAt(i);
if (tab != null) {
tab.setIcon(icons.get(i));
tab.setText(titles.get(i));
tab.getIcon().setColorFilter(selectedColor, PorterDuff.Mode.SRC_IN);
tab.getOrCreateBadge().setVisible(false);
}
}
// 设置 Tab 的选中和未选中状态的颜色
mTabLayout.setTabTextColors(Color.GRAY, selectedColor);
mTabLayout.setSelectedTabIndicatorColor(selectedColor);
}
}
class TabAdapter extends FragmentPagerAdapter {
private List<Fragment> mFragments;
private List<String> mTitles;
private List<Integer> mIcons;
public TabAdapter(FragmentManager fm, List<Fragment> fragments, List<String> titles, List<Integer> icons) {
super(fm);
mFragments = fragments;
mTitles = titles;
mIcons = icons;
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mTitles.get(position);
}
}
class Fragment1 extends Fragment {
// TODO: 实现 Fragment1 的布局和逻辑
}
class Fragment2 extends Fragment {
// TODO: 实现 Fragment2 的布局和逻辑
}
class Fragment3 extends Fragment {
// TODO: 实现 Fragment3 的布局和逻辑
}
class Fragment4 extends Fragment {
// TODO: 实现 Fragment4 的布局和逻辑
}
class Fragment5 extends Fragment {
// TODO: 实现 Fragment5 的布局和逻辑
}
```
在上面的代码中,我们使用了 TabLayout 和 ViewPager 来实现 TabView 的效果。首先,我们创建了一个 TabAdapter 类来管理 Tab 对应的 Fragment、标题和图标。然后,我们在 MainActivity 中创建了 TabLayout 和 ViewPager,并将它们绑定起来。接着,我们设置了 Tab 的图标和文字颜色,并为选中的 Tab 设置了蓝色。最后,我们实现了五个 Fragment,并在 TabAdapter 中返回它们。你可以根据自己的需求来修改这些代码,以实现你想要的效果。
阅读全文