ViewPager의 높이를 변경하려면 높이가 다른 일부 차일드가 포함되어 있습니다. ViewPager에서는 wrap_content가 불가능하므로 런타임시 높이를 변경하고 싶습니다. 나는 이것을 시도했지만 그것은 작동하지 않습니다 :Android - 런타임에 ViewPager의 높이를 변경하십시오.
pager.getLayoutParams().height=1000;
수있는 사람 모집 도움이 될까요?
CustomViewPager.class
public class CustomViewPager extends ViewPager {
/**
* Constructor
*
* @param context
* the context
*/
public CustomViewPager(Context context) {
super(context);
}
/**
* Constructor
*
* @param context
* the context
* @param attrs
* the attribute set
*/
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int height = 0;
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
child.measure(widthMeasureSpec,
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
int h = child.getMeasuredHeight();
if (h > height)
height = h;
}
heightMeasureSpec = MeasureSpec.makeMeasureSpec(height,
MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
XML 파일 :
<com.arsoft.ex.viewpager.CustomViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</com.arsoft.ex.viewpager.CustomViewPager>
MainClass :
tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
pager = (CustomViewPager) findViewById(R.id.viewPager);
adapter = new MyPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
final int pageMargin = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
.getDisplayMetrics());
pager.setPageMargin(pageMargin);
tabs.setViewPager(pager);
FragmentPagerAdapter :
public class MyPagerAdapter extends FragmentPagerAdapter {
private final String[] TITLES = { "Cook", "Recipe", "Comments" };
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: **pager.getLayoutParams().height=100;**
return CookCardFragment.newInstance(position, pager);
case 1: **pager.getLayoutParams().height=400;**
return RecipeCardFragment.newInstance(position, pager);
case 2: **pager.getLayoutParams().height=1000;**
return CookCardFragment.newInstance(position, pager);
}
return null;
}
}
당신이 페이지를 변경할 때 ViewPager의 높이를 변경하거나 높이를 변경 할 수 있었다 전체 클래스 게시 –