【发布时间】:2019-09-08 17:20:04
【问题描述】:
我动态创建TabItems,并分配新选项卡创建了一个图标,但问题是:当我再次动态创建另一个选项卡时,以前的TabItem 图标消失了!为什么:(?
这是我没有动态创建新标签时的图片:
https://drive.google.com/file/d/1C80e-Yldlu6asL2H_vCIbwH7cY7Farpn/view?usp=sharing
这是我用图标创建另一个图像时的图像:
https://drive.google.com/file/d/1i-IXudvYayLf9mGhBGQmyCkjeVkN3xXs/view?usp=sharing
你可以看到区别:(。
使用图标创建前三个动态tabitems 的代码如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_page_drawer);
this.tabLayout = findViewById(R.id.tab_layout);
this.viewPager = findViewById(R.id.view_pager);
tabLayout.setupWithViewPager(viewPager);
SetUpViewPager(viewPager);
this.toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
NavigationView navigationView = findViewById(R.id.navigation_view);
navigationView.setItemIconTintList(null);
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setIcon(R.drawable.lock);
tabLayout.getTabAt(1).setIcon(R.drawable.contacts);
tabLayout.getTabAt(2).setIcon(R.drawable.info);
这是我在TabLayout 中创建新TabItems 的代码
public void create_user_detail_tab(UserObject userObject) {
MyViewPagerAdapter Adapter = new MyViewPagerAdapter(getSupportFragmentManager());
UserDetailFragment userDetailFragment = new UserDetailFragment();
// the code for AddFragmentPage would be in the next session , i'll paste it's function for you
Adapter.AddFragmentPage(userDetailFragment,userObject.getName());
byte[] decodedString = Base64.decode(userObject.getImage(),Base64.NO_WRAP);
InputStream inputStream = new ByteArrayInputStream(decodedString);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Bitmap circleBitmap = CircleBitmapConverter.makeCircle(bitmap);
Drawable d = new BitmapDrawable(getResources(), circleBitmap);
tabLayout.getTabAt(tabs_number).setIcon(d);
// tabs_number is number of tabs wich are not changing not dynamic
TabLayout.Tab tab = tabLayout.getTabAt(tabs_number);
tab.select();
// i increase the number of tabs present each time a new one is created ( pretty logical )
tabs_number++;
}
这是 AddFragmentPage(我在之前的代码中说过,如果需要的话,我会为你包含它的代码:
public void AddFragmentPage(Fragment frag,String title) {
addToFragments(frag);
addToFragmentsTitle(title);
MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter(getSupportFragmentManager());
myViewPagerAdapter.notifyDataSetChanged();
viewPager.setAdapter(myViewPagerAdapter);
}
【问题讨论】:
标签: android dynamic-programming android-tablayout tabitem android-icons