Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java scrollview中viewPager的Android动态高度_Java_Android_Android Viewpager_Scrollview - Fatal编程技术网

Java scrollview中viewPager的Android动态高度

Java scrollview中viewPager的Android动态高度,java,android,android-viewpager,scrollview,Java,Android,Android Viewpager,Scrollview,我在滚动视图中使用了一个视图寻呼机,视图寻呼机以不同的片段加载动态内容。我从互联网上找到了很多解决方案,但没有一个适合我。在我的CustomFragmentAdaptersetPrimaryItem方法中,包含两个条件,如果这两个条件都为true,则将执行该代码块,第一个条件为true,第二个条件为false 碎片适配器 public class CustomFragmentAdoptor extends FragmentPagerAdapter { private Context m

我在滚动视图中使用了一个视图寻呼机,视图寻呼机以不同的片段加载动态内容。我从互联网上找到了很多解决方案,但没有一个适合我。在我的CustomFragmentAdaptersetPrimaryItem方法中,包含两个条件,如果这两个条件都为true,则将执行该代码块,第一个条件为true,第二个条件为false

碎片适配器

public class CustomFragmentAdoptor extends FragmentPagerAdapter {

    private Context myContext;
    int totalTabs;
    private int mCurrentPosition = -1;
    public CustomFragmentAdoptor(Context context, FragmentManager fm, int totalTabs) {
        super(fm);
        myContext = context;
        this.totalTabs = totalTabs;
    }
    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                MeetingFragment homeFragment = new MeetingFragment();
                return homeFragment;

            default:
                return null;
        }
    }

    @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
        super.setPrimaryItem(container, position, object);

        if (position != mCurrentPosition && container instanceof CustomPager) {
            
            
            //***IMPORTANT  - This block of code is not working ---"container instanceof CustomPager"---  i think this line above if condition is creating probelm
            
            Fragment fragment = (Fragment) object;
            CustomPager pager = (CustomPager) container;

            Toast.makeText(myContext, "Working", Toast.LENGTH_SHORT).show();
            if (fragment != null && fragment.getView() != null) {
                mCurrentPosition = position;
                pager.measureCurrentView(fragment.getView());
            }
        }
    }

 
    @Override
    public int getCount() {
        return totalTabs;
    }
}
public class CustomPager extends ViewPager {
        private View mCurrentView;
        Context mContext;

        public CustomPager(Context context) {
            super(context);
            mContext = context;
        }

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

        @Override
        public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);

            if (mCurrentView != null) {
                mCurrentView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

                int height = Math.max(0, mCurrentView.getMeasuredHeight());

                Toast.makeText(mContext, ""+height, Toast.LENGTH_SHORT).show();

                heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);

                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            }else{

                Toast.makeText(mContext, "Null", Toast.LENGTH_SHORT).show();
            }
        }

        public void measureCurrentView(View currentView) {
            mCurrentView = currentView;
            requestLayout();
        }
    }
定制寻呼机

public class CustomFragmentAdoptor extends FragmentPagerAdapter {

    private Context myContext;
    int totalTabs;
    private int mCurrentPosition = -1;
    public CustomFragmentAdoptor(Context context, FragmentManager fm, int totalTabs) {
        super(fm);
        myContext = context;
        this.totalTabs = totalTabs;
    }
    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                MeetingFragment homeFragment = new MeetingFragment();
                return homeFragment;

            default:
                return null;
        }
    }

    @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
        super.setPrimaryItem(container, position, object);

        if (position != mCurrentPosition && container instanceof CustomPager) {
            
            
            //***IMPORTANT  - This block of code is not working ---"container instanceof CustomPager"---  i think this line above if condition is creating probelm
            
            Fragment fragment = (Fragment) object;
            CustomPager pager = (CustomPager) container;

            Toast.makeText(myContext, "Working", Toast.LENGTH_SHORT).show();
            if (fragment != null && fragment.getView() != null) {
                mCurrentPosition = position;
                pager.measureCurrentView(fragment.getView());
            }
        }
    }

 
    @Override
    public int getCount() {
        return totalTabs;
    }
}
public class CustomPager extends ViewPager {
        private View mCurrentView;
        Context mContext;

        public CustomPager(Context context) {
            super(context);
            mContext = context;
        }

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

        @Override
        public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);

            if (mCurrentView != null) {
                mCurrentView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

                int height = Math.max(0, mCurrentView.getMeasuredHeight());

                Toast.makeText(mContext, ""+height, Toast.LENGTH_SHORT).show();

                heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);

                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            }else{

                Toast.makeText(mContext, "Null", Toast.LENGTH_SHORT).show();
            }
        }

        public void measureCurrentView(View currentView) {
            mCurrentView = currentView;
            requestLayout();
        }
    }

首先,明确你想要实现的目标。你的问题不清楚。