cevap

0

MaterialDrawer esneklik göz önünde bulundurularak tasarlanmıştır. IDrawerItem arabirimini kaldıran nesneleri alır. Böylece sadece IDrawerItem arayüzünü kullanarak kendi öğelerinizi kolayca ekleyebilirsiniz. DrawerItems gibi zaten var olan bazı varsayılan PrimaryDrawerItem gibi (sadece genişletebilirsiniz) veya tamamen özel bir yaklaşımla devam edebilirsiniz.

İşleri kolaylaştırmak için, MaterialDrawer, çoğu öğe için gereken varsayılan davranışları zaten uygulayan AbstractDrawerItem ile birlikte gelir.

Örnek uygulama here'da eklenen özel DrawerItems'e göz atabilirsiniz.

Tam bir özel öğe hiçbir sınırlama yoktur IconDrawerItem

public class IconDrawerItem extends AbstractDrawerItem<IconDrawerItem, IconDrawerItem.ViewHolder> { 
    protected ImageHolder icon; 
    protected ImageHolder selectedIcon; 

    protected boolean iconTinted = false; 

    protected ColorHolder iconColor; 
    protected ColorHolder selectedIconColor; 
    protected ColorHolder disabledIconColor; 

    //GETTER & SETTER REMOVED TO KEEP THE SNIPPET SMALL 

    @Override 
    public int getType() { 
     return R.id.material_drawer_item_icon_only; 
    } 

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

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

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

     //get the correct color for the icon 
     int iconColor; 
     if (this.isEnabled()) { 
      iconColor = ColorHolder.color(getIconColor(), ctx, R.attr.material_drawer_primary_icon, R.color.material_drawer_primary_icon); 
     } else { 
      iconColor = ColorHolder.color(getDisabledIconColor(), ctx, R.attr.material_drawer_hint_icon, R.color.material_drawer_hint_icon); 
     } 
     int selectedIconColor = ColorHolder.color(getSelectedIconColor(), ctx, R.attr.material_drawer_selected_text, R.color.material_drawer_selected_text); 

     //get the drawables for our icon and set it 
     Drawable icon = ImageHolder.decideIcon(getIcon(), ctx, iconColor, isIconTinted(), 1); 
     Drawable selectedIcon = ImageHolder.decideIcon(getSelectedIcon(), ctx, selectedIconColor, isIconTinted(), 1); 
     ImageHolder.applyMultiIconTo(icon, iconColor, selectedIcon, selectedIconColor, isIconTinted(), viewHolder.icon); 

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

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

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

    protected static class ViewHolder extends RecyclerView.ViewHolder { 
     private View view; 
     protected ImageView icon; 

     private ViewHolder(View view) { 
      super(view); 
      this.view = view; 
      this.icon = (ImageView) view.findViewById(R.id.material_drawer_icon); 
     } 
    } 
} 

olduğunu. Türü, tanımlayıcı, kullanılan düzeni tanımlamak ve verileri tüm görünümlere ayarlamak için çağrılacak olan bindView()'u uygulamak zorundasınız.

İlgili konular