我知道这个线程,如果比较老了,但我想还是分享我解决这个问题,因为它可能是一些有用的。 它工作得非常好,即使对于不同的drawables,取决于所选状态。
我首先做了定义两个数组SlidingTabLayout
类中(这很容易被外包到其他类):
private int[] imageResId = {
R.drawable.multi_random,
R.drawable.single_random,
R.drawable.known_person,
};
private int[] imageResSelected = {
R.drawable.multi_random_selected,
R.drawable.single_random_selected,
R.drawable.known_person_selected
};
private int mOldPosition = 0;
现在我们改变SlidingTabLayout
内populateTabStrip()
方法:
for (int i = 0; i < adapter.getCount(); i++) {
View tabView = null;
ImageView tabImageView = null;
if (mTabViewLayoutId != 0) { // HAS TO BE SET FOR THE MOMENT!
// If there is a custom tab view layout id set, try and inflate it
tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip,
false);
tabImageView = (ImageView) tabView.findViewById(mTabViewTextViewId);
}
if (tabView == null) {
tabView = createDefaultTabView(getContext());
}
if (tabImageView == null && ImageView.class.isInstance(tabView)) {
tabImageView = (ImageView) tabView;
}
int resourceId;
if (i == mViewPager.getCurrentItem()) {
resourceId = imageResSelected[i];
mOldPosition = i;
} else {
resourceId = imageResId[i];
}
tabImageView.setImageResource(resourceId);
tabView.setOnClickListener(tabClickListener);
mTabStrip.addView(tabView);
}
要根据选择哪个标签更新图像,我们在onPageSelected
方法中添加一些行
// This Method is called once the transition is finished
// Change the drawable of the old one..
ImageView view = (ImageView) mTabStrip.getChildAt(mOldPosition);
view.setImageResource(imageResId[mOldPosition]);
// And now change it of the current one
view = (ImageView) mTabStrip.getChildAt(position);
view.setImageResource(imageResSelected[position]);
mOldPosition = position;
最后,我们需要添加自定义选项卡浏览:
mSlidingTabLayout.setCustomTabView(R.layout.custom_tab, 0);
赞一个
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:padding="16dp"
android:layout_weight="1"
android:src="@drawable/multi_random"
/>
该解决方案是远远不够完善,但适合我的需要。也许我可以帮助这个人。
检查此http://www.mkyong.com/android/android-tablayout-example/ –
http://stackoverflow.com/questions/28125794/slidingtablayout-with-icons-only/28134763#28134763 – Daniel
我需要它,所以我改变了SlidingTabLayout代码的一点点,使它易于使用图标的标签https://github.com/kimkevin/SlidingIconTabLayout – kimkevin