Android 使用多视图寻呼机,如何设置视图寻呼机匹配\u父级

Android 使用多视图寻呼机,如何设置视图寻呼机匹配\u父级,android,android-fragments,tabs,android-viewpager,Android,Android Fragments,Tabs,Android Viewpager,我正在使用两个Viewpager,运行项目时出错,第二个Viewpager不显示,但当我设置高度值(例如:312dp)时,它将显示,我想显示高度匹配的Viewpager。我要做的事请帮帮我 main.xml 主类 公共类MainActivity扩展了AppCompatActivity{ 查看页面查看页面; ViewPager mviewPager; 查看翻转器查看翻转器; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(sa

我正在使用两个Viewpager,运行项目时出错,第二个Viewpager不显示,但当我设置高度值(例如:312dp)时,它将显示,我想显示高度匹配的Viewpager。我要做的事请帮帮我

main.xml


主类
公共类MainActivity扩展了AppCompatActivity{
查看页面查看页面;
ViewPager mviewPager;
查看翻转器查看翻转器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
//toolbar1=(Toolbar)findViewById(R.id.Toolbar);
//设置支持操作栏(工具栏1);
viewPager=(viewPager)findViewById(R.id.pager);
设置viewPager(viewPager);
mviewPager=(ViewPager)findViewById(R.id.pagerDemo);
PagerAdapter适配器=新的PagerAdapter(此);
mviewPager.setAdapter(适配器);
TabLayout TabLayout=(TabLayout)findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}
专用无效设置ViewPager(ViewPager ViewPager){
ViewPagerAdapter适配器=新的ViewPagerAdapter(getSupportFragmentManager());
addFrag(newonefragment(),“Top Tracks”);
addFrag(新的TwoFragment(),“Fasion”);
addFrag(新的ThreeFragment(),“Wheels”);
addFrag(新的FourFragment(),“Clurnery”);
adapter.addFrag(新的FiveFragment(),“Education”);
addFrag(新的SixFragment(),“技术”);
addFrag(新的SevenFragment(),“REGGAE”);
addFrag(新的EightFragment(),“progressive”);
viewPager.setAdapter(适配器);
}
类ViewPagerAdapter扩展了FragmentPagerAdapter{
私有最终列表MFFragmentList=new ArrayList();
私有最终列表MFFragmentTitleList=new ArrayList();
public ViewPagerAdapter(android.support.v4.app.FragmentManager FragmentManager){
超级(碎片管理器);
}
@凌驾
public android.support.v4.app.Fragment getItem(int位置){
返回MFFragmentList.get(位置);
}
@凌驾
public int getCount(){
返回MFFragmentList.size();
}
public void addFrag(android.support.v4.app.Fragment片段,字符串标题){
添加(片段);
MFFragmentTitleList.add(标题);
}
@凌驾
公共字符序列getPageTitle(int位置){
返回MFFragmentTitleList.get(位置);
}
}
适配器类
公共类pageradapter扩展了pageradapter
{
private int[]image_resource={R.drawable.thired,R.drawable.apple,R.drawable.phone};
语境;
公共页面编辑器(上下文){
this.context=上下文;
}
@凌驾
公共整数getCount(){
返回图像资源长度;
}
@凌驾
公共布尔值isViewFromObject(视图,对象){
返回(视图==(LinearLayout)对象);
}
@凌驾
公共对象实例化项(视图组容器,int位置){
LayoutInflater LayoutInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
View itemView=LayoutFlater.充气(R.layout.pageview,容器,false);
ImageView im=(ImageView)itemView.findViewById(R.id.imPager);
im.setImageResource(图像资源[位置]);
container.addView(itemView);
返回项目视图;
}
@凌驾
公共项(视图组容器、int位置、对象){
container.removeView((LinearLayout)对象);
}
}

在布局xml中,需要更改viewpager上方的表格布局。
您需要设置与父项匹配的高度,因为属性是从上到下级联的。

在布局xml中,您需要更改viewpager上方的tablayout。
您需要设置与父项匹配的高度,因为属性是从上到下级联的。

使用此WrappedViewPager类而不是ViewPager,并为WrappedViewPager设置高度换行内容

public class WrappedViewPager extends ViewPager {

public WrappedViewPager(Context context) {
    super(context);
}

public WrappedViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int 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);
} }
公共类WrappedViewPage扩展了ViewPager{
公共wrappedviewPage(上下文){
超级(上下文);
}
公共WrappedViewManager(上下文、属性集属性){
超级(上下文,attrs);
}
@凌驾
测量时的保护空隙(内部宽度测量等级、内部高度测量等级){
整数高度=0;
对于(int i=0;i高度)高度=h;
}
heightMeasureSpec=MeasureSpec.MakeMasureSpec(高度,精确测量);
超级测量(宽度测量、高度测量);
} }
替换为laout中的viewpager:

<your_package_name_where_you_put_this_class.WrappedViewPager
                      android:layout_margin="10dp"
                    android:id="@+id/pager"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"/>


谢谢,

使用此WrappedViewPager类而不是ViewPager,并为WrappedViewPager设置高度换行内容

public class WrappedViewPager extends ViewPager {

public WrappedViewPager(Context context) {
    super(context);
}

public WrappedViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int 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);
} }
公共类WrappedViewPage扩展了ViewPager{
公共wrappedviewPage(上下文){
超级(上下文);
}
公共WrappedViewManager(上下文、属性集属性){
超级(上下文,attrs);
}
@凌驾
测量时的保护空隙(内部宽度测量等级、内部高度测量等级){
整数高度=0;
对于(int i=0;i高度)高度=h;
}
高度