工具栏徽标ID

时间:2015-01-05 16:13:59

标签: android android-toolbar

我很有兴趣设置和配置工具栏徽标的不同属性,例如设置Onclick监听器或使用Picasso下载并使用“fit”picasso方法设置圆角图像。

为此,我需要工具栏的ID(请注意,徽标,而不是android.R.id.home的导航图标)查找视图,因为收费栏没有任何方法来获取ImageView。

1 个答案:

答案 0 :(得分:6)

似乎Toolbar类动态创建其子View,所以我相信我们必须自己搜索徽标View。在您设置徽标后,但在添加任何其他徽标之前(如果确实如此),徽标是ImageView的唯一Toolbar子徽,我们可以这样做:

private ImageView getLogoView(Toolbar toolbar) {
    for (int i = 0; i < toolbar.getChildCount(); i++)
        if(toolbar.getChildAt(i) instanceof ImageView)
            return (ImageView) toolbar.getChildAt(i);

    return null;
}

另一种可能性是在Toolbar类上使用反射。在设置徽标后,可以随时使用此方法。

private ImageView getLogoView(Toolbar toolbar) {
    try {
        Class<?> toolbarClass = Toolbar.class;
        Field logoViewField = toolbarClass.getDeclaredField("mLogoView");
        logoViewField.setAccessible(true);
        ImageView logoView = (ImageView) logoViewField.get(toolbar);

        return logoView;
    }
    catch (NoSuchFieldException | IllegalAccessException e) {
        e.printStackTrace();
    }

    return null;
}