package org.itsnat.droid.impl.xmlinflater.layout.classtree; import android.content.res.Configuration; import android.content.res.TypedArray; import android.view.ContextThemeWrapper; import org.itsnat.droid.impl.dom.DOMAttr; import org.itsnat.droid.impl.util.MiscUtil; import org.itsnat.droid.impl.util.NamespaceUtil; import org.itsnat.droid.impl.xmlinflater.layout.ClassDescViewMgr; import org.itsnat.droid.impl.xmlinflater.layout.attr.OrientationUtil; import org.itsnat.droid.impl.xmlinflater.layout.attr.widget.AttrDescView_widget_GridLayout_alignmentMode; import org.itsnat.droid.impl.xmlinflater.shared.GravityUtil; import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDescReflecMethodBoolean; import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDescReflecMethodInt; import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDescReflecMethodNameSingle; import java.util.List; /** * Created by jmarranz on 30/04/14. */ public class ClassDescView_widget_GridLayout extends ClassDescViewBased { private static final int[] layoutParamsAttrs = new int[]{android.R.attr.layout_gravity,android.R.attr.layout_column,android.R.attr.layout_columnSpan, android.R.attr.layout_row,android.R.attr.layout_rowSpan}; private static final String[] layoutParamsNames = new String[] {"layout_gravity","layout_column","layout_columnSpan", "layout_row","layout_rowSpan"}; public ClassDescView_widget_GridLayout(ClassDescViewMgr classMgr,ClassDescView_view_ViewGroup parentClass) { super(classMgr,"android.widget.GridLayout",parentClass); } public static void getGridLayoutLayoutParamsFromStyleId(int styleId,List<DOMAttr> styleLayoutParamsAttribs,ContextThemeWrapper ctx) { if (styleId == 0) throw MiscUtil.internalError(); Configuration configuration = ctx.getResources().getConfiguration(); TypedArray a = ctx.obtainStyledAttributes(styleId, layoutParamsAttrs); for(int i = 0; i < layoutParamsAttrs.length; i++) { if (!a.hasValue(i)) continue; String name = layoutParamsNames[i]; String value; if ("layout_gravity".equals(name)) { int valueInt = a.getInt(i,0); value = GravityUtil.getNameFromValue(valueInt); } else { // Los demás atributos son enteros normales value = a.getString(i); } DOMAttr attr = DOMAttr.createDOMAttr(NamespaceUtil.XMLNS_ANDROID, name, value); styleLayoutParamsAttribs.add(attr); } a.recycle(); // Llamamos a la clase base ClassDescView_view_ViewGroup.getViewGroupMarginLayoutParamsFromStyleId(styleId, styleLayoutParamsAttribs, ctx); } @SuppressWarnings("unchecked") protected void init() { super.init(); addAttrDescAN(new AttrDescView_widget_GridLayout_alignmentMode(this)); addAttrDescAN(new AttrDescReflecMethodInt(this, "columnCount", Integer.MIN_VALUE)); // El MIN_VALUE está sacado del código fuente addAttrDescAN(new AttrDescReflecMethodBoolean(this, "columnOrderPreserved", true)); addAttrDescAN(new AttrDescReflecMethodNameSingle(this, "orientation", int.class, OrientationUtil.nameValueMap, "horizontal")); addAttrDescAN(new AttrDescReflecMethodInt(this, "rowCount", Integer.MIN_VALUE)); // El MIN_VALUE está sacado del código fuente addAttrDescAN(new AttrDescReflecMethodBoolean(this, "rowOrderPreserved", true)); addAttrDescAN(new AttrDescReflecMethodBoolean(this, "useDefaultMargins", false)); } }