【问题标题】:MaterialDrawer CustomDrawerItemMaterialDrawer CustomDrawerItem
【发布时间】:2015-08-18 07:51:05
【问题描述】:

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

【问题讨论】:

  • here 是最好的例子
  • 谢谢,但是如何在 MaterialDrawer 库中实现呢?我发现,如何创建切换:通过 ToggleDrawerItem (文档没有说明)。现在只有一个问题:如何创建布尔状态指示器(例如:菜单有项目配置文件活动,并且有两种状态活动和非活动。我该如何显示它?)
  • 你有没有做过任何事情,如果是,比邮政编码,如果不是,我会告诉你下一步该做什么
  • 我正在尝试根据您的示例构建自己的菜单。谢谢。

标签: android materialdrawer


【解决方案1】:

要实现CustomDrawerItem,您必须实现IDrawerItem 接口。这定义了所有需要的方法。只需仔细查看DividerDrawerItemSectionDrawerItem,它们都更简单一些。

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);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2016-11-15
    • 2016-12-05
    相关资源
    最近更新 更多