我正在使用Florent37-MateriralViewPager库它运行良好,但我的要求是选项卡上的图标。现在我只使用文字。 Library的MainActivity.java如下所示。
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 = "http://myimage.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标签栏中添加图标。谢谢。 。想添加这样的图标。
答案 0 :(得分:1)
首先从
复制整个代码并制作自定义标签类。
那么你应该改变 notifyDataSetChanged()类并在FOR LOOP中实现您喜欢的任何内容! 这是每个视图膨胀并添加到标签条的地方编辑:
你做这样的事情
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);
}