首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MaterialDrawer CustomDrawerItem

MaterialDrawer CustomDrawerItem
EN

Stack Overflow用户
提问于 2015-08-18 07:51:05
回答 1查看 3.1K关注 0票数 5

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-12 20:06:53

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

代码语言:javascript
复制
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);
        }
    }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32066618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档