Android 设置颜色选项卡主机指示器

Android 设置颜色选项卡主机指示器,android,android-tabhost,Android,Android Tabhost,如何设置选项卡主机指示器颜色我想将浅蓝色默认颜色更改为红色 我需要通过编程来实现这一点,因为我是通过编程来制作标签的 我做了一些研究,看了这个例子,但它不适合我。用渐进的方法 谢谢您可以通过编程方式完成此操作,甚至可以根据需要更改颜色,方法是遵循您提到的解决方案,并添加一个调整颜色的选项 因此: 创建适当的可绘制图形。其中一个答案中提到的最简单的方法是使用 将tab\u indicator\u ab\u example.xml(可绘制)加上每个可绘制密度的6个相关png文件(tab.*.pn

如何设置选项卡主机指示器颜色我想将浅蓝色默认颜色更改为红色

我需要通过编程来实现这一点,因为我是通过编程来制作标签的

我做了一些研究,看了这个例子,但它不适合我。用渐进的方法


谢谢

您可以通过编程方式完成此操作,甚至可以根据需要更改颜色,方法是遵循您提到的解决方案,并添加一个调整颜色的选项

因此:

  • 创建适当的可绘制图形。其中一个答案中提到的最简单的方法是使用
  • tab\u indicator\u ab\u example.xml
    (可绘制)加上每个可绘制密度的6个相关png文件(tab.*.png)放入项目中
  • 创建选项卡后,使用迭代
    TabWidget
    子视图的代码设置它们的背景,但是:
  • 使用颜色过滤器将其颜色更改为所需颜色,而不是按原样设置可绘制
  • 而不是此代码:

    for(int i = 0; i < widget.getChildCount(); i++) {
        ... /* same as before */
    
        v.setBackgroundResource(R.drawable.your_tab_selector_drawable);
    }
    
    for(int i=0;i
    这样写:

    for(int i = 0; i < widget.getChildCount(); i++) {
        ... /* same as before */
    
        Drawable d = getResources().getDrawable(R.drawable.tab_indicator_ab_example);
        d.setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN);
        v.setBackgroundDrawable(d);
    }
    
    for(int i=0;i
    实际上,链接答案中的解决方案是有效的,即使选项卡是通过编程方式添加的。你试过了吗?你遇到什么问题了吗?@matiash是的,但我不希望颜色总是白色只是为了澄清。。。您需要动态更改颜色吗?比如,前一次是红色,下一次是蓝色?这也是可能的,但稍微复杂一点。是的,一次当它打开时,我想要它说绿色,另一次说红色。我将xml文件添加到我的drawable是否正确?@iqueqiorio从style generator创建的zip中,将我提到的内容复制到项目的res中。好的,明白了:)唯一的一点是它说,
    setBackgroundDrawable
    不推荐使用有办法解决这个问题吗,我只是不喜欢用弃用的methods@iqueqiorio您可以在jellybean或更高版本中使用setbackground,在以前的版本中使用旧方法。