更改android选项卡滑动中特定选项卡的背景颜色

时间:2014-07-31 01:00:23

标签: android android-layout android-fragments

这是我主要活动的创作

private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private ActionBar actionBar;
    private TabHost tabHost;
    // Tab titles
    private String[] tabs = { "1", "2", "3" };

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

        // Initialization
        viewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();
        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
        //actionBar.setStackedBackgroundDrawable(new ColorDrawable(0xFFFF0000));
        tabHost = (TabHost) findViewById(android.R.id.tabhost);
        Log.d("miau", String.valueOf(tabHost));


        viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));
        }

我需要每个标签都有不同的颜色。任何指针?提前谢谢。

2 个答案:

答案 0 :(得分:1)

只需将ImageView用于相应xml中的特定Tab。然后给该图像视图宽度和高度“MatchParent”。并为该Imageview设置背景颜色。

答案 1 :(得分:0)

您可以在添加标签时尝试使用setCustomView(View v)方法。

所以喜欢:

//...code

 for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this).setCustomView(myView);
        }

//...more code...

然后使您的自定义视图(myView)成为您想要的任何颜色的普通视图。我假设你没有一堆标签。如果你这样做,你可能想要制作一个视图,然后随意为它分配一种颜色。所以有一大堆颜色,然后在你的for循环中为myView分配颜色,然后将该视图设置为选项卡。

我不确定这会如何影响标签的文本,但是如果它确实如此,您可以向自定义视图添加textview,然后以这种方式添加标题。

更复杂的版本是创建自己的自定义选项卡类并以这种方式覆盖所有内容。