所以我希望tablayout和viewpager能夠通過不同的片段進行滑動。TabLayout和Viewpager - 用圖像替換文字
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
tabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
viewPager = (ViewPager) view.findViewById(R.id.viewPager);
viewPagerAdapter = new ViewPagerAdapter(getFragmentManager());
viewPagerAdapter.addFragments(new AFragment(), "Test1", getContext());
viewPagerAdapter.addFragments(new BFragment(), "Test2", getContext());
viewPagerAdapter.addFragments(new CFragment(), "Test3", getContext());
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
return view;
}
而且我ViewPagerAdapter類看起來是這樣的:
public class ViewPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragments = new ArrayList<>();
ArrayList<String> tabTitles = new ArrayList<>();
Context context;
public void addFragments(Fragment fragments, String titles, Context context) {
this.fragments.add(fragments);
this.tabTitles.add(titles);
this.context = context;
}
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return tabTitles.get(position);
}
}
所以適配器設置我viewPager來包含所有如標題爲我tabLayout和片段的量的信息。那是對的嗎?
所以我現在要做的是用某些圖標替換我的tabLayout上的標題。 我應該刪除我的ViewPagerAdapter構造函數中的String參數並刪除我的Arraylist,還是必須傳遞一個空字符串?
我需要添加哪些代碼才能將ViewPageAdapter類添加到ViewPageAdapter類中,以便能夠將圖標而不是字符串添加到佈局中? 我發現了一個可能的解決方案在這裏:How to add page title and icon in android FragmentPagerAdapter
所以我改變了我的方法到:
@Override
public CharSequence getPageTitle(int position) {
myDrawable = ContextCompat.getDrawable(context, R.drawable.ic_mail_outline_black_24dp);
SpannableStringBuilder sb = new SpannableStringBuilder(" Page #"+ position); // space added before text for convenience
myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());
ImageSpan span = new ImageSpan(myDrawable, ImageSpan.ALIGN_BASELINE);
sb.setSpan(span, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb;
}
,改變了我的標題頁#0#1 ......但沒有圖標添加到我的TabLayout。 謝謝!
編輯:
這工作了。還是不知道我做了什麼,雖然錯了
tabLayout.getTabAt(i).setIcon();
仍然有待觀察沒有圖標。這可能是一個尺寸問題嗎? –
請檢查編輯的答案 – Ratnesh
您的方法似乎沒有任何影響。我把它改成(「123」+ title)來檢查。並沒有使用新名稱'123'+標題。我的方法至少對標題有影響。 –