【问题标题】:Set color tab host indicator设置颜色选项卡主机指示器
【发布时间】:2014-12-22 20:32:05
【问题描述】:

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

当我以编程方式制作标签时,我需要以编程方式进行此操作。

我做了一些研究并查看了这个示例,但它对我不起作用。采用程序化方法。

TabWidget current tab bottom line color

谢谢

【问题讨论】:

  • 实际上,链接答案中的解决方案有效,即使选项卡是以编程方式添加的。你试过了吗?您遇到什么问题了吗?
  • @matiash 是的,但我不希望颜色总是白色
  • 只是为了澄清...您需要动态更改颜色吗?例如,一次它们是红色的,而下一次它们是蓝色的?这也是可能的,但稍微复杂一些。

标签: android android-tabhost


【解决方案1】:

您可以按照您提到的linked question 中的解决方案以编程方式执行此操作,甚至可以根据需要更改颜色,并添加ColorFilter 来调整颜色。

所以:

  1. 创建适当的drawable。如答案之一所述,最简单的方法是使用https://jgilfelt.github.io/android-actionbarstylegenerator/
  2. tab_indicator_ab_example.xml(可绘制)以及每个可绘制密度的 6 个关联 png 文件 (tab_*.png) 放入您的项目中。
  3. 创建选项卡后,使用迭代 TabWidget 子视图的代码设置它们的背景,但是:
  4. 不要按原样设置可绘制对象,使用滤色器将其颜色更改为所需的颜色

代替这段代码:

for(int i = 0; i < widget.getChildCount(); i++) {
    ... /* same as before */

    v.setBackgroundResource(R.drawable.your_tab_selector_drawable);
}

这样写:

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);
}

【讨论】:

  • 是的,有一次当它打开时,我希望它说绿色,另一次是红色。我将 xml 文件添加到我的可绘制对象中正确吗?
  • @iqueqiorio 从样式生成器创建的 zip 中,将我提到的那些复制到您项目的 res 中。
  • 好吧 :) 唯一的事情是它说 setBackgroundDrawable 已被弃用有没有办法解决这个问题,我只是不喜欢使用弃用的方法
  • @iqueqiorio 您可以在果冻豆或更高版本中使用 setbackground 以及以前版本的旧方法。
猜你喜欢
  • 2015-11-12
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多