@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()); }
public void setAttribute( View view, DOMAttr attr, XMLInflaterLayout xmlInflaterLayout, Context ctx, OneTimeAttrProcess oneTimeAttrProcess, PendingPostInsertChildrenTasks pending) { super.setAttribute(view, attr, xmlInflaterLayout, ctx, oneTimeAttrProcess, pending); methodContainer.invoke( view); // Hay que llamar a este método syncTextState sino no se entera del cambio, ni // siquiera en creación via parse dinámico }
public static GridLayout.Alignment getAlignment( GridLayout view, int gravity, boolean horizontal) { return method_getAlignment.invoke(view, gravity, horizontal); }