首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

android:如何从Android Support Lib版本4向PagerTabStrip添加图标/ drawable?

在Android Support Lib版本4中,PagerTabStrip并不直接支持添加图标或drawable。但是,您可以通过自定义PagerAdapter和PagerTabStrip来实现这个功能。以下是一个简单的示例:

  1. 首先,创建一个自定义PagerAdapter,继承自android.support.v4.view.PagerAdapter:
代码语言:java
复制
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomPagerAdapter extends PagerAdapter {
    private Context mContext;
    private Drawable[] mDrawableArray;
    private String[] mTitles;

    public CustomPagerAdapter(Context context, Drawable[] drawableArray, String[] titles) {
        mContext = context;
        mDrawableArray = drawableArray;
        mTitles = titles;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        LayoutInflater inflater = LayoutInflater.from(mContext);
        View view = inflater.inflate(R.layout.pager_item, container, false);

        ImageView imageView = view.findViewById(R.id.imageView);
        TextView textView = view.findViewById(R.id.textView);

        imageView.setImageDrawable(mDrawableArray[position]);
        textView.setText(mTitles[position]);

        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }

    @Override
    public int getCount() {
        return mDrawableArray.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }
}
  1. 创建一个新的布局文件(例如:pager_item.xml),用于显示图标和标题:
代码语言:xml
复制
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

   <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"/>

   <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:textColor="@android:color/white"/>

</LinearLayout>
  1. 在您的主布局文件中添加PagerTabStrip和ViewPager:
代码语言:xml<android.support.v4.view.ViewPager
复制
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

   <android.support.v4.view.PagerTabStrip
        android:id="@+id/pagerTabStrip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:paddingTop="4dp"
        android:paddingBottom="4dp"
        android:textColor="@android:color/white"
        android:background="@android:color/darker_gray"/>

</android.support.v4.view.ViewPager>
  1. 在您的Activity或Fragment中初始化ViewPager和PagerTabStrip,并设置自定义PagerAdapter:
代码语言:java
复制
public class MainActivity extends AppCompatActivity {

    private ViewPager mViewPager;
    private PagerTabStrip mPagerTabStrip;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mViewPager = findViewById(R.id.viewPager);
        mPagerTabStrip = findViewById(R.id.pagerTabStrip);

        // 设置ViewPager的滚动监听器,以便在滚动时更新PagerTabStrip的显示
        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                mPagerTabStrip.setTabIndicatorPosition(position + positionOffset);
            }

            @Override
            public void onPageSelected(int position) {
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });

        // 创建自定义PagerAdapter
        Drawable[] drawableArray = new Drawable[]{
                ContextCompat.getDrawable(this, R.drawable.ic_home),
                ContextCompat.getDrawable(this, R.drawable.ic_search),
                ContextCompat.getDrawable(this, R.drawable.ic_settings)
        };
        String[] titles = new String[]{"Home", "Search", "Settings"};
        CustomPagerAdapter adapter = new CustomPagerAdapter(this, drawableArray, titles);

        // 设置PagerAdapter
        mViewPager.setAdapter(adapter);
        mPagerTabStrip.setTabIndicatorColor(ContextCompat.getColor(this, R.color.colorAccent));
    }
}

现在,您应该可以在PagerTabStrip中看到带有图标的标签。请注意,这个示例使用了Android Support Lib的最新版本,您可能需要根据您的项目需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Kotlin入门(24)如何自定义视图

    Android提供了丰富多彩的视图与控件,已经能够满足大部分的业务需求,然而计划赶不上变化,总是有意料之外的情况需要特殊处理。比如PagerTabStrip无法在布局文件中指定文本大小和文本颜色,只能在代码中通过setTextSize和setTextColor方法来设置。这用起来殊为不便,如果它能像TextView那样直接在布局指定文本大小和颜色就好了;要想让PagerTabStrip支持该特性,就得通过自定义视图来实现,而自定义视图的第一种途径便是自定义属性。 仍旧以翻页标题栏PagerTabStrip举例,现在给它新增两个自定义属性,分别是文本颜色textColor,以及文本大小textSize。下面给出Java编码的自定义步骤: 1. 在res\values目录下创建attrs.xml,文件内容如下所示,其中declare-styleable的name属性值表示新视图的名称,两个attr节点表示新增的两个属性分别是textColor和textSize:

    03

    Android开发笔记(一百三十三)导航视图NavigationView

    很多App都有个人中心的侧滑菜单,通常在页面左侧边缘右拉时,即可弹出个人中心的菜单页面。对于Android来说,侧滑功能用到了抽屉布局DrawerLayout,我们只要把页面的根布局设置为DrawerLayout,并指定弹出的侧滑视图,就能通过右拉页面左侧边缘,从而拉出定义好的侧滑视图。 有关DrawerLayout的详细说明参见《Android开发笔记(一百二十)两种侧滑布局》,这里就不再赘述了,接下来要介绍的是Android自带的导航视图NavigationView,它是一个侧滑菜单控件,常常用来展示个人中心页面,以及导航菜单栏目。比如下面这个图片,便是从CSDN的App个人中心页面截图而来。

    04

    开发工具总结(1)之图文并茂全面总结上百个AS好用的插件(上)

    俗话说得好,工欲善其事,必先利其器。做开发时间长了,总想找一些快捷方法,只有拥有好用的工具,才能节省开发时间,提高工作效率。我就是一个 追(喜)求(欢)高(偷)效(懒) 的开发人员,正好趁着国庆假期,把平日用到的一些 Android Studio开发插件 整理了一下,分享给大家。   有人会问了,网上也有很多博客在讲Android Studio的插件总结,为什么你还要弄一篇博客呢?我可以告诉大家,网上讲的那些很多都是文字,要么就是给你一个链接,有些还是过时的,有些博客讲的比较全面,可是并没有分门别类去区分,很杂乱;有的博客做了分类,但是都是文字和链接,打开某些链接只是一些简单的图片,很简单。

    01

    Android开发笔记(一百三十九)可定制可滑动的标签栏

    App在页面底部展现标签栏导航的效果,有多种实现方式,包括TabActivity方式、ActivityGroup方式、FragmentActivity方式等等,具体的实现方案参见之前的博文《Android开发笔记(十九)底部标签栏》。 一般情况下这种底部标签栏能够满足大部分的业务需求,然而有时客户的口味比较独特,固定的几款套餐已经不能满足她的胃口了。比如客户要求做成自助餐形式,同时长条的固定餐台也要换成可以滑动的餐台,因为固定餐台还得客户左右移步才能夹菜,可滑动的餐台就无需客户再走来走去。那么对应到底部标签栏这里,便是要求标签页的个数允许定制,并且每个页面除了可以通过标签页的点击操作进行切换之外,也允许通过左右滑动来切换。

    02
    领券