以编程方式更改Gingerbread中的Actionbar标题颜色

时间:2014-06-20 09:27:44

标签: android android-actionbar

我需要以编程方式更改操作栏标题文本颜色。

我使用以下代码以稍微不同的方式设置颜色,具体取决于SDK版本

int textColor = getResources().getColor(android.R.color.white);
    if (Build.VERSION.SDK_INT >= 14) {
        // Version 4+
        int titleId = getResources().getIdentifier("action_bar_title", "id", "android");
        TextView abTitle = (TextView) findViewById(titleId);
        if (abTitle != null) {
            abTitle.setTextColor(textColor);
        }
    } else {
        // Other versions
        TextView abTitle = (TextView) getWindow().findViewById(android.R.id.title);
        if (abTitle != null) {
            abTitle.setTextColor(textColor);
        }
    }

在SDK值为14或更高的设备上运行正常。但是,对于Gingerbread设备,abTitle始终为null,因此颜色不会设置。

Anyony有什么建议吗?

2 个答案:

答案 0 :(得分:6)

你的if/else错了,看起来应该是

 int titleId;
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
      titleId = getResources().getIdentifier("action_bar_title", "id", "android");
  } else {
      titleId = R.id.action_bar_title;
  }

然后您应该可以通过findViewById

直接获取它

答案 1 :(得分:-1)

您是否使用过支持库?由于在api 11级以下不支持Actionbar。