用反射給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();
        }
    }

 

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