我创建了一个SlidingTabLayout,我使用此处的代码进行调整,以便它可以使用图标而不是文本。我的问题是图标两侧的填充物太多,导致标签条略微滚动。我有4个图标/标签。
我尝试了什么 我已经尝试过调整我想到的地方去除填充或使图标变小。
首先我在createDefaultImageView()中调整了imageView,然后调整了custom_tabs.xml中的宽度。然后我尝试调整populatedTabStrip()中的tabIconView和tabView。在传递给tabIconView.setImageDrawable()之前,我还尝试在图像上设置setBounds()。似乎没有任何改变。我可以使填充更大,但不能使其更小或减小我的图标的大小。
任何帮助将不胜感激。感谢。
悬崖笔记: 需要在slidingtablayout中调整图标大小和/或填充
我的代码:
SlidingTabLayout.java
private void populateTabStrip() {
//creating a new populateTabStrip to use icons
final TroopPagerAdapter adapter = (TroopPagerAdapter) mViewPager.getAdapter();
final View.OnClickListener tabClickListener = new TabClickListener();
for (int i = 0; i < adapter.getCount(); i++) {
View tabView = null;
ImageView tabIconView = null;
if (tabView == null) {
tabView = createDefaultImageView(getContext());
}
if (tabIconView == null && ImageView.class.isInstance(tabView)) {
tabIconView = (ImageView) tabView;
}
tabIconView.setImageDrawable(getResources().getDrawable(adapter.getDrawableId(i)));
if (mViewPager.getCurrentItem() == i) {
tabIconView.setSelected(true);
}
tabView.setOnClickListener(tabClickListener);
mTabStrip.addView(tabView);
}
}
//Added in to get the icons on the slider
protected ImageView createDefaultImageView(Context context) {
ImageView imageView = new ImageView(context);
int padding = (int) (TAB_VIEW_PADDING_DIPS * getResources().getDisplayMetrics().density);
imageView.setPadding(0, 0, 4, 4);
int width = (int) (getResources().getDisplayMetrics().widthPixels / mViewPager.getAdapter().getCount());
return imageView;
}
}
custom_tabs.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabContainer"
android:layout_width="40dp"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tabImage"
android:layout_gravity="center"/>
<TextView
android:layout_width="42dp"
android:layout_height="wrap_content"
android:id="@+id/tabText"
android:gravity="bottom|center"/>
</LinearLayout>
TroopPagerAdapter.java
public class TroopPagerAdapter extends FragmentPagerAdapter {
int icons[] = {R.drawable.elix_barracks_tab, R.drawable.dark_barracks_tab, R.drawable.spells_king_tab, R.drawable.setup_tab};
@Override
public CharSequence getPageTitle(int position) {
return null;
}
@Override
public int getCount() {
return numberOfTabs;
}
public int getDrawableId(int position) {
return icons[position];
}
}