在切换视图后,查看寻呼机布局不会保持匹配

时间:2017-10-31 20:41:21

标签: android android-layout android-studio android-viewpager

我的viewpager中有四个布局,应该匹配其父级(viewpager)的宽度/高度。当活动开始时,第一页似乎会这样做,但只要您滑动到下一页,就会出现这种奇怪的差距。差距将持续到活动重新开始。我如何摆脱这种差距?

以下是有关正在发生的事情的视频:https://youtu.be/EA51HZuFruY

其中一个布局的XML(其他三个只有相同的背景颜色)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent" android:background="@color/blue">


      <Button
         android:id="@+id/tab1_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerInParent="true"
         android:onClick="tab1Click"/>

</RelativeLayout>

viewpager适配器的代码

private class TabPagerAdapter extends PagerAdapter {
    private ArrayList<Integer> layouts = new ArrayList<>();

    TabPagerAdapter() {
        layouts.add(R.layout.tab_menu_1);
        layouts.add(R.layout.tab_menu_2);
        layouts.add(R.layout.tab_menu_3);
        layouts.add(R.layout.tab_menu_4);
    }

    @Override
    public int getCount() {
        return layouts.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == (View) object;
    }

    @Override
    public Object instantiateItem(ViewGroup collection, int position) {
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(layouts.get(position), collection, false);
        collection.addView(view);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup collection, int position, Object view) {
        collection.removeView((View) view);
    }

}

编辑:如果viewpager中有两个以上的视图,则我在viewpager中的布局与父级不匹配。我还可以告诉观察者不要保留我给他们的约束。

编辑:大约一个月后,我发现更改屏幕外页面限制以支持可能屏幕外的最大屏幕数量可以解决问题。虽然我对此很好,但它会导致应用程序变慢,但也许这可能会揭示实际问题。

0 个答案:

没有答案