/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.fragments; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.util.AttributeSet; import com.galaxy.meetup.client.android.R; /** * * @author sihai * */ public class GridView extends android.widget.GridView { private final int attrsArray[] = { 0x1010114, 0x1010115 }; private int mHorizontalSpacing; private int mVerticalSpacing; public GridView(Context context) { super(context); mHorizontalSpacing = 0; mVerticalSpacing = 0; } public GridView(Context context, AttributeSet attributeset) { super(context, attributeset); mHorizontalSpacing = 0; mVerticalSpacing = 0; init(context, attributeset); } public GridView(Context context, AttributeSet attributeset, int i) { super(context, attributeset, i); mHorizontalSpacing = 0; mVerticalSpacing = 0; init(context, attributeset); } private void init(Context context, AttributeSet attributeset) { TypedArray typedarray = context.obtainStyledAttributes(attributeset, attrsArray); mHorizontalSpacing = typedarray.getDimensionPixelSize(0, 0); mVerticalSpacing = typedarray.getDimensionPixelSize(1, 0); typedarray.recycle(); } protected void onMeasure(int i, int j) { Resources resources = getContext().getResources(); int k = android.view.View.MeasureSpec.getSize(i); int l = resources.getDimensionPixelSize(R.dimen.medium_avatar_dimension) + 2 * resources.getDimensionPixelSize(R.dimen.medium_avatar_selected_padding); int i1 = (k + mHorizontalSpacing) / (l + mHorizontalSpacing); int j1 = i1 * (l + mHorizontalSpacing) - mHorizontalSpacing; if(i1 > 0 && getLayoutParams().height == -2) { int k1 = getCount(); int l1 = resources.getDimensionPixelSize(R.dimen.medium_avatar_selected_dimension) + resources.getDimensionPixelSize(R.dimen.medium_avatar_name_height); int i2 = (-1 + (k1 + i1)) / i1; int j2 = l1 * i2 + getPaddingTop() + getPaddingBottom() + mVerticalSpacing * (i2 - 1); super.onMeasure(android.view.View.MeasureSpec.makeMeasureSpec(j1, 0x40000000), android.view.View.MeasureSpec.makeMeasureSpec(j2, 0x40000000)); } else { super.onMeasure(android.view.View.MeasureSpec.makeMeasureSpec(j1, 0x40000000), j); } } }