简体   繁体   English

如何使用TabLayout在Android Viewpager上设置图标

[英]How to set icons on Android Viewpager With TabLayout

I want to show icons and Title on my Viewpager. 我想在Viewpager上显示图标和标题。 activity_main.xml activity_main.xml中

<android.support.v4.view.ViewPager android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/pageViewer"
xmlns:android="http://schemas.android.com/apk/res/android">

<android.support.design.widget.TabLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content" />

</android.support.v4.view.ViewPager>

CustomPagerAdapter.java CustomPagerAdapter.java

 public class TabsAdapter extends FragmentPagerAdapter {

    public TabsAdapter(FragmentManager fg){
        super(fg);
    }
    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 1:
                return new TabBlueFragments();
            case 0:
                return new TabGreenFragment();
            case 2:
                return new TabRedFragment();
        }
        return null;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position){
            case 1:
                return "Blue";
            case 0:
                return "Green";
            case 2:
                return "Red";
        }
        return "";
    }

    @Override
    public int getCount() {
        return 3;
    }
}

Section of MainActivity.java where i call adapter. 我在MainActivity.java中调用适配器的部分。

viewPager=(ViewPager)findViewById(R.id.pageViewer);

TabsAdapter adapter = new TabsAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);

I missed a method of returning icons. 我错过了一种返回图标的方法。 But titles are displayed properly. 但是标题显示正确。

You can use SpannableStringBuilder to create an Icon with text UI for the page title. 您可以使用SpannableStringBuilder为页面标题创建带有文本UI的Icon。 Refer below code: 请参考以下代码:

 @Override
    public CharSequence getPageTitle(int position) {
        switch (position){
            case 1:
                SpannableStringBuilder blue = new SpannableStringBuilder("Blue 
                "); 
                myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(), 
                myDrawable.getIntrinsicHeight()); 
                ImageSpan span = new ImageSpan(myDrawable, 
                ImageSpan.ALIGN_BASELINE); 
                blue.setSpan(span, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

                return blue;
            case 0:
                SpannableStringBuilder green = new SpannableStringBuilder("Green 
                "); 
                myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(), 
                myDrawable.getIntrinsicHeight()); 
                ImageSpan span = new ImageSpan(myDrawable, 
                ImageSpan.ALIGN_BASELINE); 
                green.setSpan(span, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

                return green;
            case 2:
                SpannableStringBuilder red = new SpannableStringBuilder("Red 
                "); 
                myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(), 
                myDrawable.getIntrinsicHeight()); 
                ImageSpan span = new ImageSpan(myDrawable, 
                ImageSpan.ALIGN_BASELINE); 
                red.setSpan(span, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

                return red;
        }
        return "";
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM