android - 如何获取 ActionBar View ?

标签 android view android-actionbar android-actionbar-compat showcaseview

我正在使用 Showcase 库来解释我的应用程序功能 用户。在某些时候,我需要调暗整个 ActionBar 来呈现 用户的另一个功能。

为此,我正在使用 View 类的 setAlpha(float num)。因此,为此我需要获取 ActionBar

的实际 View 实例

顺便说一下,我正在使用 support-7-appcompat 库,它为旧系统提供 ActionBar 支持。

更新

与此同时,我发现了这个选项,如果您配置自定义 View 并将其添加到您 ActionBar 使用:

getSupportActionBar().setCustomView(v);

然后要获得 ActionBarView 你可以这样做:

(View) activity.getSupportActionBar().getCustomView().getParent().getParent()

有没有更简单或更容易的方法来做到这一点?

最佳答案

是的。您实际上可以使用此函数获取 View :

public View getActionBarView() {
    Window window = getWindow();
    View v = window.getDecorView();
    int resId = getResources().getIdentifier("action_bar_container", "id", "android");
    return v.findViewById(resId);
}

这种工作方式几乎是 actionbar 容器使用 id android.R.id.action_bar_container,但这个 id 不是公开的。因此,我们使用 getIdentifier() 来检索这个 id,然后剩下的就很简单了。

关于android - 如何获取 ActionBar View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20023483/

相关文章:

android-如何扩展FragmentActivity和actionbaractivity

android - 为什么共享库中存在展开符号

java - 如何将字符串值设置为从 Android 中的 Firestore 数据库检索的微调器?

android - 任务 ':YAMSTestApp:preDexDebug' 执行失败

design-patterns - 在 MVVM 模式中,模型和 View 什么时候直接相互通信?

asp.net-mvc - ASP.Net MVC 使用新的模型实例返回 View 而不是使用重定向到操作

html - WKWebView 在 Mac OSX 中不显示 HTML 字符串

java - 仅检索维基百科中的介绍文本

android - 如何拦截ActionBarSherlock中 "Up"(主页按钮)按钮的点击?

android - 如何知道 MenuItem 是在 ActionBar 还是 Overflow