5

我想试试这个有趣的标题栏着色,但它对我不起作用

getWindow().findViewById(android.R.id.title);

返回空值。所以我用 Hierarchy Viewer 查看了它,发现视图被调用id/action_bar了。但是没有R.id.action_bar(自动完成不提供它,也没有像这样的东西R.java)。

所以现在我很困惑:

  • 现在android.R.id.title有点过时了(我在模拟器中使用的是版本 16)?
  • 从哪里来id/action_bar
  • 什么是推荐和简单的做法 wrt 兼容性?

我应该得到 ActionBarSherlock 吗?我本来只是想改变标题栏的颜色......而不是胡闹。

4

2 回答 2

1

如果您正在寻找与 API 级别 14 / Android 4.0 之前的 Android 版本的兼容性,我建议您使用 ActionBarSherlock。

更改 ActionBar 的背景很简单,并且通过样式最容易完成。请参阅http://android-developers.blogspot.com/2011/04/customizing-action-bar.html的“背景”部分

您也可以通过代码更改它。把它放在你的onCreate()

GradientDrawable gradientDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[] {Color.RED, Color.GREEN});
getActionBar().setBackgroundDrawable(gradientDrawable);

这是此代码的屏幕截图:

在此处输入图像描述

于 2012-10-24T03:30:39.660 回答
1

使用以下代码获取 ActionBar 的 id:

val actionBarId = resources.getIdentifier("action_bar", "id", packageName)

然后从 actionbar 的子项中找到标题(正常情况下):

val actionbar = findViewById<ViewGroup>(actionBarId)
for (view in actionbar.children) {
    if (view is TextView) {
        // this is the titleView
    }
}
于 2021-11-18T11:30:36.593 回答