我使用 Florent37-MateriralViewPager 库它运作良好,但我的需要量是在标签上的图标。现在我只是仅使用文本。图书馆的MainActivity.java是如下图所示。
I am using Florent37-MateriralViewPager library It is working well but my requirment is Icons on the tabs. For now I just using text only. Library's MainActivity.java is as below.
mViewPager = (MaterialViewPager) findViewById(R.id.materialViewPager);
mViewPager.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "T", Toast.LENGTH_LONG).show();
}
});
toolbar = mViewPager.getToolbar();
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (toolbar != null) {
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayUseLogoEnabled(true);
actionBar.setHomeButtonEnabled(true);
}
}
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer, 0, 0);
mDrawer.setDrawerListener(mDrawerToggle);
mViewPager.getViewPager().setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
int oldPosition = -1;
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return HotOffers.newInstance();
case 1:
return TwentyOffers.newInstance();
case 2:
return Brands.newInstance();
case 3:
return Category.newInstance();
default:
return RecyclerViewFragment.newInstance();
}
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container, position, object);
//only if position changed
if (position == oldPosition)
return;
oldPosition = position;
int color = 0;
String imageUrl = "https://m.xsw88.com/allimgs/daicuo/20230907/5716.png.jpg";
switch (position) {
case 0:
//imageUrl = arrayList.get(position);
color = getResources().getColor(R.color.cyan);
break;
case 1:
//imageUrl = arrayList.get(position);
color = getResources().getColor(R.color.cyan);
break;
case 2:
//imageUrl = arrayList.get(position);
color = getResources().getColor(R.color.cyan);
break;
case 3:
//imageUrl = arrayList.get(position);
color = getResources().getColor(R.color.cyan);
break;
}
final int fadeDuration = 500;
mViewPager.setImageUrl(imageUrl, fadeDuration);
mViewPager.setColor(color, fadeDuration);
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Top Twenty";
case 1:
return "Just For You";
case 2:
return "Brands";
case 3:
return "Category";
}
return "";
}
});
mViewPager.getViewPager().setOffscreenPageLimit(mViewPager.getViewPager().getAdapter().getCount());
mViewPager.getPagerTitleStrip().setViewPager(mViewPager.getViewPager());
mViewPager.getViewPager().setCurrentItem(0);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
请帮助我如何我可以添加图标到MaterialViewPager标签bar.Thanks。。想添加图标这样。
Please help me how can i add icons to the MaterialViewPager tab bar.Thanks. . Would like to add icons like this.
首先复制整个code从
first of all copy the whole code from
https://github.com/jpardogo/PagerSlidingTabStrip/blob/master/library/src/com/astuetz/PagerSlidingTabStrip.java
和创建自定义选项卡类。
and make a custom tab class.
那么你应该改变notifyDataSetChanged()类,并实现你在for循环什么都喜欢!这正是每个视图变得膨胀,并添加到标签条
then you should change notifyDataSetChanged() class and implement what ever you like in the FOR LOOP ! that is where each view become inflated and added to tab Strip
编辑:
您做这样的事情。
public void notifyDataSetChanged() {
tabsContainer.removeAllViews();
tabCount = pager.getAdapter().getCount();
View tabView;
for (int i = 0; i < tabCount; i++) {
tabView = LayoutInflater.from(getContext()).inflate(YOUR_CUSTOM_LAYOUT, this, false);
CharSequence title = pager.getAdapter().getPageTitle(i);
addTab(i, title,icons[i], tabView);
}
updateTabStyles();
getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
}
});
}
private void addTab(final int position, CharSequence title,int drawableId, View tabView) {
TextView textView = (TextView) tabView.findViewById(TEXTVIEW_IN_CUSTOMLAYOUT);
ImageView imageView = (ImageView) tabView.findViewById(IMAGEVIEW_IN_CUSTOMLAYOUT);
if (textView != null) {
if (title != null) textView.setText(title);
}
if (imageView != null) {
if (drawableId != 0) imageView.setIamgeResource(drawableId);
}
tabView.setFocusable(true);
tabView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (pager.getCurrentItem() != position) {
View tab = tabsContainer.getChildAt(pager.getCurrentItem());
notSelected(tab);
pager.setCurrentItem(position);
} else if (tabReselectedListener != null) {
tabReselectedListener.onTabReselected(position);
}
}
});
tabsContainer.addView(tabView, position, shouldExpand ? expandedTabLayoutParams : defaultTabLayoutParams);
}