/** apply clickable in view */ public static void applyClickable(View view, DynamicProperty property) { if (view != null) { switch (property.type) { case BOOLEAN: { view.setClickable(property.getValueBoolean()); } break; } } }
/** apply adjustBounds property in ImageView */ public static void applyAdjustBounds(View view, DynamicProperty property) { if (view instanceof ImageView) { switch (property.type) { case BOOLEAN: { ((ImageView) view).setAdjustViewBounds(property.getValueBoolean()); } break; } } }
/** * apply dynamic properties for layout in view * * @param view * @param properties : layout properties to apply * @param viewGroup : parent view * @param ids : hashmap of ids <String, Integer> (string as setted in json, int that we use in * layout) */ public static void applyLayoutProperties( View view, List<DynamicProperty> properties, ViewGroup viewGroup, HashMap<String, Integer> ids) { if (viewGroup == null) return; ViewGroup.LayoutParams params = createLayoutParams(viewGroup); for (DynamicProperty dynProp : properties) { try { switch (dynProp.name) { case LAYOUT_HEIGHT: { params.height = dynProp.getValueInt(); } break; case LAYOUT_WIDTH: { params.width = dynProp.getValueInt(); } break; case LAYOUT_MARGIN: { if (params instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams p = ((ViewGroup.MarginLayoutParams) params); p.bottomMargin = p.topMargin = p.leftMargin = p.rightMargin = dynProp.getValueInt(); } } break; case LAYOUT_MARGINLEFT: { if (params instanceof ViewGroup.MarginLayoutParams) { ((ViewGroup.MarginLayoutParams) params).leftMargin = dynProp.getValueInt(); } } break; case LAYOUT_MARGINTOP: { if (params instanceof ViewGroup.MarginLayoutParams) { ((ViewGroup.MarginLayoutParams) params).topMargin = dynProp.getValueInt(); } } break; case LAYOUT_MARGINRIGHT: { if (params instanceof ViewGroup.MarginLayoutParams) { ((ViewGroup.MarginLayoutParams) params).rightMargin = dynProp.getValueInt(); } } break; case LAYOUT_MARGINBOTTOM: { if (params instanceof ViewGroup.MarginLayoutParams) { ((ViewGroup.MarginLayoutParams) params).bottomMargin = dynProp.getValueInt(); } } break; case LAYOUT_ABOVE: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.ABOVE, ids.get(dynProp.getValueString())); } break; case LAYOUT_BELOW: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.BELOW, ids.get(dynProp.getValueString())); } break; case LAYOUT_TOLEFTOF: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.LEFT_OF, ids.get(dynProp.getValueString())); } break; case LAYOUT_TORIGHTOF: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.RIGHT_OF, ids.get(dynProp.getValueString())); } break; case LAYOUT_TOSTARTOF: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.START_OF, ids.get(dynProp.getValueString())); } break; case LAYOUT_TOENDOF: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.END_OF, ids.get(dynProp.getValueString())); } break; case LAYOUT_ALIGNBASELINE: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.ALIGN_BASELINE, ids.get(dynProp.getValueString())); } break; case LAYOUT_ALIGNLEFT: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.ALIGN_LEFT, ids.get(dynProp.getValueString())); } break; case LAYOUT_ALIGNTOP: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.ALIGN_TOP, ids.get(dynProp.getValueString())); } break; case LAYOUT_ALIGNRIGHT: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.ALIGN_RIGHT, ids.get(dynProp.getValueString())); } break; case LAYOUT_ALIGNBOTTOM: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.ALIGN_BOTTOM, ids.get(dynProp.getValueString())); } break; case LAYOUT_ALIGNSTART: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.ALIGN_START, ids.get(dynProp.getValueString())); } break; case LAYOUT_ALIGNEND: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params) .addRule(RelativeLayout.ALIGN_END, ids.get(dynProp.getValueString())); } break; case LAYOUT_ALIGNWITHPARENTIFMISSING: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params).alignWithParent = dynProp.getValueBoolean(); } break; case LAYOUT_ALIGNPARENTTOP: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params).addRule(RelativeLayout.ALIGN_PARENT_TOP); } break; case LAYOUT_ALIGNPARENTBOTTOM: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params).addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); } break; case LAYOUT_ALIGNPARENTLEFT: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params).addRule(RelativeLayout.ALIGN_PARENT_LEFT); } break; case LAYOUT_ALIGNPARENTRIGHT: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params).addRule(RelativeLayout.ALIGN_PARENT_RIGHT); } break; case LAYOUT_ALIGNPARENTSTART: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params).addRule(RelativeLayout.ALIGN_PARENT_START); } break; case LAYOUT_ALIGNPARENTEND: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params).addRule(RelativeLayout.ALIGN_PARENT_END); } break; case LAYOUT_CENTERHORIZONTAL: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params).addRule(RelativeLayout.CENTER_HORIZONTAL); } break; case LAYOUT_CENTERVERTICAL: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params).addRule(RelativeLayout.CENTER_VERTICAL); } break; case LAYOUT_CENTERINPARENT: { if (params instanceof RelativeLayout.LayoutParams) ((RelativeLayout.LayoutParams) params).addRule(RelativeLayout.CENTER_IN_PARENT); } break; case LAYOUT_GRAVITY: { switch (dynProp.type) { case INTEGER: { if (params instanceof LinearLayout.LayoutParams) ((LinearLayout.LayoutParams) params).gravity = dynProp.getValueInt(); } break; case STRING: { if (params instanceof LinearLayout.LayoutParams) ((LinearLayout.LayoutParams) params).gravity = (Integer) dynProp.getValueInt( Gravity.class, dynProp.getValueString().toUpperCase()); } break; } } break; case LAYOUT_WEIGHT: { switch (dynProp.type) { case FLOAT: { if (params instanceof LinearLayout.LayoutParams) ((LinearLayout.LayoutParams) params).weight = dynProp.getValueFloat(); } break; } } break; } } catch (Exception e) { } } view.setLayoutParams(params); }