336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
ScrollView 안에 GridView나 ListView를 넣게 되면, GridView나 ListView가 풀 사이즈로 보이지 않습니다.
ListView는 위 방법을 HeaderView나 FooterView로 넣는 방법으로 해결이 가능하지만,
GrdiView는 HeaderView나 FooterView가 없기 때문에 고민을 해야 햇죠.
이때.. 역시 구글 검신님이 알려주셨습니다.
GridView를 확장하게 하는 방법을!!
Layout 소스
<ScrollView | |
android:id="@+id/sc_spots" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:fillViewport="true" > | |
<xx.xxx.xx.view.ExpandableHeightGridView | |
android:id="@+id/spotsView" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:layout_marginTop="15dp" | |
android:layout_marginBottom="15dp" | |
android:layout_marginLeft="5dp" | |
android:layout_marginRight="5dp" | |
android:horizontalSpacing="10dp" | |
android:isScrollContainer="false" | |
android:numColumns="5" | |
android:stretchMode="columnWidth" | |
android:verticalSpacing="10dp" /> | |
</ScrollView> |
ExpandableHeightGridView 소스
package xx.xxx.xx.view; | |
import android.content.Context; | |
import android.util.AttributeSet; | |
import android.view.ViewGroup; | |
import android.widget.GridView; | |
/** | |
* ScrollViewの中のGridViewでも高さを可変にする<br> | |
* http://stackoverflow.com/questions/8481844/gridview-height-gets-cut | |
*/ | |
public class ExpandableHeightGridView extends GridView | |
{ | |
boolean expanded = false; | |
public ExpandableHeightGridView(Context context) | |
{ | |
super(context); | |
} | |
public ExpandableHeightGridView(Context context, AttributeSet attrs) | |
{ | |
super(context, attrs); | |
} | |
public ExpandableHeightGridView(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. | |
// View.MEASURED_SIZE_MASK represents the largest height possible. | |
int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, | |
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; | |
} | |
} |
위 두 소스를 이용하면 문제 없이 포함된 소스와 함께 스크롤이 됩니다!!
참고하세요.
https://gist.github.com/sakurabird/6868765
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[Android] EditText에서 Email 타입을 설정 할때 (0) | 2015.10.02 |
---|---|
[Android] DialogActivity에서 title과 백그라운드 제거 코드 (0) | 2015.09.17 |
[Android] Textview에 link 달기 (0) | 2015.09.14 |
[Android] Fragment 사용시 주의점. (0) | 2015.09.04 |
[Android] FragmentPagerAdapter 갱신!!! (18) | 2015.09.04 |