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

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

 

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

函数如下图。。。。。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();
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章