我正在构建一个具有以下布局的Android应用程序。
已知layout_height="wrap_content"
对ViewPager不起作用。
我的问题是如何动态地更改它。ViewPager的内容是从两个xml布局vp_statistics.xml和vp_campaigns.xml
中填充的。
这是ViewPager的XML代码:
<LinearLayout
android:id="@+id/topcontent_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/viewpager_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
这是我的PagerAdapter的代码:
class MyPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return 2;
}
public Object instantiateItem(View collection, int pos){
LayoutInflater inflater = (LayoutInflater)collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch(pos){
case 0:
resId = R.layout.vp_statistics;
break;
case 1:
resId = R.layout.vp_campaigns;
break;
}
View view = inflater.inflate(resId, null);
((ViewPager)collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
((ViewPager)container).removeView((View)object);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == ((View)arg1);
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
}
并且在我的Activity类的onCreate()方法内部:
MyPagerAdapter adapter = new MyPagerAdapter();
ViewPager viewPager = (ViewPager)findViewById(R.id.viewpager);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);
有没有一种方法可以在每次调用 instantiateItem()
对象时获取 vp_statistics.xml
和 vp_campaigns.xml
布局的高度,并动态地将其分配给 ViewPager (@id/viewpager)
?