Android 材料制图员

Android 材料制图员,android,materialdrawer,Android,Materialdrawer,如何在库中创建自定义的DrawerItem(1.我需要切换2.我需要布尔状态指示器)?MaterialDrawer的作者说,创建自定义的DrawerItem是一项非常简单的任务,但我在这个库的文档中找不到它。要实现CustomDrawerItem,您必须实现IDraWritem接口。这定义了所需的所有方法。只需仔细查看或部分DrawerItem,两者都稍微简单一些 public class DividerDrawerItem extends AbstractDrawerItem<Divid

如何在库中创建自定义的
DrawerItem
(1.我需要切换2.我需要布尔状态指示器)?MaterialDrawer的作者说,创建自定义的
DrawerItem
是一项非常简单的任务,但我在这个库的文档中找不到它。

要实现
CustomDrawerItem
,您必须实现
IDraWritem
接口。这定义了所需的所有方法。只需仔细查看或
部分DrawerItem
,两者都稍微简单一些

public class DividerDrawerItem extends AbstractDrawerItem<DividerDrawerItem> {
    @Override
    public String getType() {
        return "DIVIDER_ITEM";
    }

    @Override
    @LayoutRes
    public int getLayoutRes() {
        return R.layout.material_drawer_item_divider;
    }

    @Override
    public void bindView(RecyclerView.ViewHolder holder) {
        Context ctx = holder.itemView.getContext();

        //get our viewHolder
        ViewHolder viewHolder = (ViewHolder) holder;

        //set the identifier from the drawerItem here. It can be used to run tests
        holder.itemView.setId(getIdentifier());

        //define how the divider should look like
        viewHolder.view.setClickable(false);
        viewHolder.view.setEnabled(false);
        viewHolder.view.setMinimumHeight(1);

        //set the color for the divider
        viewHolder.divider.setBackgroundColor(UIUtils.getThemeColorFromAttrOrRes(ctx, R.attr.material_drawer_divider, R.color.material_drawer_divider));

        //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required)
        onPostBindView(this, holder.itemView);
    }

    @Override
    public ViewHolderFactory getFactory() {
        return new ItemFactory();
    }

    public static class ItemFactory implements ViewHolderFactory<ViewHolder> {
        public ViewHolder factory(View v) {
            return new ViewHolder(v);
        }
    }

    private static class ViewHolder extends RecyclerView.ViewHolder {
        private View view;
        private View divider;

        private ViewHolder(View view) {
            super(view);
            this.view = view;
            this.divider = view.findViewById(R.id.material_drawer_divider);
        }
    }
}
公共类DividerDrawerItem扩展了AbstractDrawerItem{
@凌驾
公共字符串getType(){
返回“分隔器_项”;
}
@凌驾
@布局
公共int getLayoutRes(){
返回R.layout.material\u drawer\u item\u Different;
}
@凌驾
public void bindView(RecyclerView.ViewHolder){
Context ctx=holder.itemView.getContext();
//找到我们的取景器
ViewHolder ViewHolder=(ViewHolder)holder;
//在此处设置drawerItem中的标识符。它可用于运行测试
holder.itemView.setId(getIdentifier());
//定义分隔符的外观
viewHolder.view.setClickable(假);
viewHolder.view.setEnabled(false);
viewHolder.view.setMinimumHeight(1);
//设置分隔器的颜色
viewHolder.divider.setBackgroundColor(UIUtils.getThemeColorFromAttrOrRes(ctx,R.attr.material\u drawer\u divider,R.color.material\u drawer\u divider));
//调用onPostBindView方法触发后绑定视图操作(如侦听器在需要时修改项)
onPostBindView(这是holder.itemView);
}
@凌驾
public ViewHolderFactory getFactory(){
返回新的ItemFactory();
}
公共静态类ItemFactory实现ViewHolderFactory{
公共视图支架工厂(视图v){
返回新的视图持有者(v);
}
}
私有静态类ViewHolder扩展了RecyclerView.ViewHolder{
私人视野;
私视分割器;
私有视图持有者(视图){
超级(视图);
this.view=视图;
this.divider=view.findviewbyd(R.id.material\u drawer\u divider);
}
}
}

是最好的例子谢谢,但如何在MaterialDrawer库中实现它呢?我发现,如何创建切换:通过ToggleDrawerItem(文档没有说明)。现在只有一个问题:如何创建布尔状态指示器(例如:菜单有项目配置文件活动,有两种状态处于活动状态和非活动状态。我如何显示它?)。谢谢