@Override
  public void setAttribute(final View view, DOMAttr attr, AttrLayoutContext attrCtx) {
    final String year = getString(attr.getResourceDesc(), attrCtx.getXMLInflaterContext());

    Object datePickerObject = getDatePickerObject(view);

    // Delegamos al final porque los atributos maxDate y minDate tienen prioridad (ganan si están
    // definidos)
    // sobre startYear y endYear
    Locale currentLocale = fieldCurrentLocale.get(datePickerObject);
    Calendar tempDate = Calendar.getInstance(currentLocale);
    tempDate.clear();

    if (!TextUtils.isEmpty(year)) {
      int yearInt = Integer.parseInt(year);
      if ("endYear".equals(name)) tempDate.set(yearInt, Calendar.DECEMBER /*11*/, 31);
      else if ("startYear".equals(name)) tempDate.set(yearInt, Calendar.JANUARY /*0*/, 1);
    } else {
      // Caso de eliminación de atributo, intrepretamos como el deseo de poner los valores por
      // defecto (más o menos es así en el código fuente)
      // hay que tener en cuenta que es un valor explícito por lo que ignoramos/reemplazamos los
      // posibles valores anteriores
      if ("endYear".equals(name)) tempDate.set(DEFAULT_END_YEAR, Calendar.DECEMBER /*11*/, 31);
      else if ("startYear".equals(name))
        tempDate.set(DEFAULT_START_YEAR, Calendar.JANUARY /*0*/, 1);
    }

    methodMaxMinDate.invoke(datePickerObject, tempDate.getTimeInMillis());
  }
  @Override
  public void setAttribute(final View view, DOMAttr attr, AttrLayoutContext attrCtx) {
    final int height =
        getDimensionWithNameIntRound(attr.getResourceDesc(), attrCtx.getXMLInflaterContext());

    Runnable task =
        new Runnable() {
          @Override
          public void run() {
            ViewGroup.LayoutParams params = view.getLayoutParams();
            params.height = height;
          }
        };

    PendingViewPostCreateProcess pendingViewPostCreateProcess =
        attrCtx.getPendingViewPostCreateProcess();
    if (pendingViewPostCreateProcess != null) {
      pendingViewPostCreateProcess.addPendingLayoutParamsTask(task);
    } else {
      task.run();
      PendingViewPostCreateProcess.onChangedLayoutParams(view);
    }
  }
  @Override
  public void setAttribute(TattrTarget target, DOMAttr attr, TattrContext attrCtx) {
    int id = getIdentifier(attr.getResourceDesc(), attrCtx.getXMLInflaterContext());

    setField(target, id);
  }