Android的 - 如何与不同高度多个孩子的ViewPager [英] Android - How to ViewPager with multiple childs with different heights
问题描述
我有一个ViewPager并在其适配器我有3个孩子的(片段)。这些孩子的3应该对内容测量不同高度。
我已经尝试覆盖onMeasure了Methode在ViewPager像这样(SRC: stackoverflow.com/questions/8394681/android-i-am-unable-to-have-viewpager-wrap-content/18167273#18167273)
@覆盖
保护无效onMeasure(INT widthMeasureSpec,诠释heightMeasureSpec){
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
查看查看= NULL; 的for(int i = 0; I< getChildCount();我++){
//找到第一个子视图
鉴于= getChildAt(I)
如果(查看!= NULL){
//测量与指定的措施规范第一子视图
view.measure(widthMeasureSpec,heightMeasureSpec);
} setMeasuredDimension(getMeasuredWidth(),
measureHeight(heightMeasureSpec,视图));
}}
但是,这并不对所有在ViewPager它只是将设置一个高度为所有孩子的工作。
这是从ViewPager扩展CustomViewPager:
这是viewPager适配器:
公共类MyPagerAdapter扩展FragmentPagerAdapter { 私人最终的String [] = TITLES {卡1,卡2,Card3}; 公共MyPagerAdapter(FragmentManager FM){
超(FM);
} @覆盖
公共CharSequence的getPageTitle(INT位置){
返回TITLES [位置]
} @覆盖
公众诠释的getCount(){
返回TITLES.length;
} @覆盖
公共片段的getItem(INT位置){
开关(位置){
情况下0:
返回CookCardFragment.newInstance(位置); 情况1:
返回RecipeCardFragment.newInstance(位置); 案例2:
返回CookCardFragment.newInstance(位置);
}
返回null;
}}
@覆盖
公众持股量getPageWidth(INT位置){
返回0.98f; //(0-1]此值指定页面会占用的空间在屏幕上
}
I have a ViewPager and in its adapter I have 3 childs(Fragments). These 3 childs should have different heights measured on content.
I have already tried to override the onMeasure Methode in ViewPager like this (src: stackoverflow.com/questions/8394681/android-i-am-unable-to-have-viewpager-wrap-content/18167273#18167273)
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
View view = null;
for (int i = 0; i < getChildCount(); i++) {
// find the first child view
view = getChildAt(i);
if (view != null) {
// measure the first child view with the specified measure spec
view.measure(widthMeasureSpec, heightMeasureSpec);
}
setMeasuredDimension(getMeasuredWidth(),
measureHeight(heightMeasureSpec, view));
}
}
But this don't work for all the childs in the ViewPager it only sets one height for all.
This is the CustomViewPager extended from ViewPager:
This is the adapter for viewPager:
public class MyPagerAdapter extends FragmentPagerAdapter {
private final String[] TITLES = { "card1", "card2", "Card3" };
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:
return CookCardFragment.newInstance(position);
case 1:
return RecipeCardFragment.newInstance(position);
case 2:
return CookCardFragment.newInstance(position);
}
return null;
}
}
@Override
public float getPageWidth(int position) {
return 0.98f; //(0-1] this values specifies how much space a page will occupy on screen
}
这篇关于Android的 - 如何与不同高度多个孩子的ViewPager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!