欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用反射给toolbar空间里的mLogo设置点击事件

程序员文章站 2022-06-18 11:17:12
...

用反射给toolbar空间里的mLogo设置点击事件

给这个图标设置点击事件,这个图标是一个Imagivew类型,放在一个toolbar里面,toolbar是一个viewgroup,直接得到这个view设置点击就可以本来,但是坑爹的是这个Imagivew在viewgroup中是一个私有类型,而且坑爹的谷歌没有给这个imagive设置get set方法。。。。。。用反射给toolbar空间里的mLogo设置点击事件

 

这样的话就只可以用反射调用了。。。。。

函数如下图。。。。。over

private void initListener() {
        try {
            Field field = toolbar.getClass().getDeclaredField("mLogoView");
            field.setAccessible(true);
            ImageView imageView = (ImageView) field.get(toolbar);
            imageView.setTransitionName("SEIV");
            imageView.setId(R.id.tool_bar_log);
            imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Pair<View, String>[] pairs = new Pair[]{
                            Pair.create(mDrawerLayout.findViewById(R.id.tool_bar_log), "SEIV")};
                    ActivityOptionsCompat options = ActivityOptionsCompat
                            .makeSceneTransitionAnimation(AppLifeCircleUtil.activityStack.get(0), pairs);
                    ARouter.getInstance().build(ARouterPage.MYPAGE_ACTIVITY).withOptionsCompat(options)
                            .navigation(MainActivity.this);
                }
            });


        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            ToastUtils.showLongToast("1");

            e.printStackTrace();
        }
    }

 

相关标签: 反射