Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何使用lib mikepenz / MaterialDrawer自定义DrawerItem大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用lib MaterialDrawer( https://github.com/mikepenz/MaterialDrawer).

我想使用右侧的侧栏作为Foursquare过滤器的过滤器部分:

但我注意到只有SectionDrawerItem.java,SwitchDrawerItem.java和ToggleDrawerItem.java定义了切换和切换.但它们不足以定义过滤器.我想问一下我是否可以为侧边栏定义自己的布局或者为DrawerItem添加更多选项?提前致谢!

解决方法

最简单的解决方案是扩展现有的DrawerItem之一,但这仅在您不需要完全不同的项时才有效.

示例应用程序中已显示CustomDrawerItem

public class CustomPriMaryDrawerItem extends PriMaryDrawerItem {

    private ColorHolder BACkground;

    public CustomPriMaryDrawerItem withBACkgroundColor(int BACkgroundColor) {
        this.BACkground = ColorHolder.fromColor(BACkgroundColor);
        return this;
    }

    public CustomPriMaryDrawerItem withBACkgroundRes(int BACkgroundRes) {
        this.BACkground = ColorHolder.fromColorRes(BACkgroundRes);
        return this;
    }

    @Override
    public void bindView(RecyclerView.ViewHolder holder) {
        super.bindView(holder);

        if (BACkground != null) {
            BACkground.applyToBACkground(holder.itemView);
        }
    }
}

如果您需要更多自定义,只需实现IDrawerItem接口并实现这些方法.实现带有一些预定义方法属性的AbstractDrawerItem的更简单的DrawerItem是DividerDrawerItem

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

大佬总结

以上是大佬教程为你收集整理的android – 如何使用lib mikepenz / MaterialDrawer自定义DrawerItem全部内容,希望文章能够帮你解决android – 如何使用lib mikepenz / MaterialDrawer自定义DrawerItem所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。