gpt4 book ai didi

android - 如何更改选定的选项卡图标?

转载 作者:行者123 更新时间:2023-11-29 19:01:25 25 4
gpt4 key购买 nike

在我的应用中,我想更改为所选标签的图标。

我有一个选中的图标和未选中的图标。当我选择一个选项卡时,它会替换为选定的图标。

并且还可以更改 tabcolor,如您在图片中所见。与所选选项卡的图标颜色相同。

![unselected for tab icon center][]

![selected for tab icon center][]

我的问题是我该怎么做?请提供任何建议或示例代码?

这是我的tablayout代码

public class HomeActivity extends BaseActivity {

/**
* Activity class name holder variable
*/
private static final String CLASS_NAME = HomeActivity.class.getSimpleName();
/**
* Variables
*/
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;

@Override
protected int getLayoutResourceId() {
return R.layout.activity_home;
}

@Override
protected Activity getActivity() {
return this;
}

@Override
protected void initView() {

toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);

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

setupTabIcons();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initView();
}


@Override
protected void onPause() {
super.onPause();
JZVideoPlayer.releaseAllVideos();
}


@Override
public void onBackPressed() {

if(JZVideoPlayer.backPress()){
return;
}
super.onBackPressed();
}

private void setupTabIcons() {
int[] tabIcons = {
R.drawable.menu_join,
R.drawable.menu_rate,
R.drawable.menu_winners
};

tabLayout.getTabAt(0).setIcon(tabIcons[0]);
tabLayout.getTabAt(1).setIcon(tabIcons[1]);
tabLayout.getTabAt(2).setIcon(tabIcons[2]);
}

private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new JoinFragment(), "join");
adapter.addFrag(new RateFragment(), "rate");
adapter.addFrag(new WinnerFragment(),"winner");
viewPager.setAdapter(adapter);
}



class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();

public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}

@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}

@Override
public int getCount() {
return mFragmentList.size();
}

public void addFrag(Fragment fragment,String title){
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}

@Override
public CharSequence getPageTitle(int position) {
// return null to display only the icon
return null;
}
}

}

最佳答案

Keep two icons in the drawable/mipmap .

  • 一个用于标签选择图标
  • 和另一个用于选项卡未选中图标... (R.drawable.green 用于选择) , (R.drawable.black为取消选择)

如果你有 3 个图标,则总共需要 6 个

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

switch (tab.getPosition())
{

case 0:
tab.setIcon(R.drawable.green);
tabLayout.getTabAt(1).setIcon(R.drawable.black);
tabLayout.getTabAt(2).setIcon(R.drawable.black);

break;
case 1:
tab.setIcon(R.drawable.green);
tabLayout.getTabAt(2).setIcon(R.drawable.black);
tabLayout.getTabAt(0).setIcon(R.drawable.black);

break;
case 2:
tab.setIcon(R.drawable.green);
tabLayout.getTabAt(0).setIcon(R.drawable.black);
tabLayout.getTabAt(1).setIcon(R.drawable.black);
break;





}



}

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

}

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

}
});

关于android - 如何更改选定的选项卡图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48962294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com