Android 查找工具栏

标签 android toolbar

我的应用程序中有两个模块。在第二个中,我将 Activity 作为上下文。该任务需要通过第二个模块的工具栏动画。问题在于我不想将工具栏对象从 1 模块发送到 2 模块,也许有某种方法可以通过 Activity 对象获取它?

最佳答案

这个一点都不难。如果您将阅读此 answer ,您可以看到工具栏具有私有(private) ID,可以使用 getResources().getIdentifier("action_bar", "id", "android") 找到它。但在某些情况下,当您尝试通过此 ID 查找 View 时,结果为空。那么你应该尝试用第二种方法递归地找到它。希望这对您有所帮助。

    @Nullable public Toolbar getToolbarView(@NonNull Context context) {
        Activity activity = ((Activity) context);

        int resId = context.getResources().getIdentifier("action_bar", "id", "android");

        Toolbar toolbar = (Toolbar) activity.findViewById(resId);
        if (toolbar == null) {
            toolbar = findToolbar((ViewGroup) activity.findViewById(android.R.id.content));
        }
        return toolbar;
    }

    private Toolbar findToolbar(@NonNull ViewGroup viewGroup) {
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View view = viewGroup.getChildAt(i);
            if (view.getClass().getName().equals("android.support.v7.widget.Toolbar")
                    || view.getClass().getName().equals("android.widget.Toolbar")) {
                return (Toolbar) view;
            } else if (view instanceof ViewGroup) {
                return findToolbar((ViewGroup) view);
            }
        }
        return null;
    }

关于Android 查找工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42320778/

相关文章:

android - 如何使android actionbar背景图像重复x和y

带有 ListView 的 Android Material Signature 元素

android - 如何安装多个内部应用程序

android - RecyclerView OnClick 通过 intent 长按添加标记到 map

java - Android/Java 将值从一个屏幕传递到另一个屏幕并显示值

excel - 如何以编程方式将工具栏按钮(和 OnClick 处理程序)添加到 Excel

android - 如何更改工具栏主页图标颜色

android - 使用 Google 设计库时,如何使工具栏快速显示或隐藏?

android - 协调器布局内容显示在状态栏后面

android - 当我们上下滚动recyclerView时隐藏和显示 View 组