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(文档没有说明)。现在只有一个问题:如何创建布尔状态指示器(例如:菜单有项目配置文件活动,有两种状态处于活动状态和非活动状态。我如何显示它?)。谢谢