Created
May 4, 2012 04:20
-
-
Save jiahuang/2591977 to your computer and use it in GitHub Desktop.
gridview inside of scrollview
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// http://pastebin.com/KMcwGrS8 | |
public class ScrollableGridView extends GridView { | |
boolean expanded = true; | |
public ScrollableGridView(Context context) | |
{ | |
super(context); | |
} | |
public ScrollableGridView(Context context, AttributeSet attrs) | |
{ | |
super(context, attrs); | |
} | |
public ScrollableGridView(Context context, AttributeSet attrs, | |
int defStyle) | |
{ | |
super(context, attrs, defStyle); | |
} | |
public boolean isExpanded() | |
{ | |
return expanded; | |
} | |
@Override | |
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) | |
{ | |
// HACK! TAKE THAT ANDROID! | |
if (isExpanded()) | |
{ | |
// Calculate entire height by providing a very large height hint. | |
// But do not use the highest 2 bits of this integer; those are | |
// reserved for the MeasureSpec mode. | |
int expandSpec = MeasureSpec.makeMeasureSpec( | |
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); | |
super.onMeasure(widthMeasureSpec, expandSpec); | |
ViewGroup.LayoutParams params = getLayoutParams(); | |
params.height = getMeasuredHeight(); | |
} | |
else | |
{ | |
super.onMeasure(widthMeasureSpec, heightMeasureSpec); | |
} | |
} | |
public void setExpanded(boolean expanded) | |
{ | |
this.expanded = expanded; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment