использовать вид пейджер в пользовательском представлении - PullRequest
0 голосов
/ 02 июля 2019

я хочу использовать viewpager в пользовательском представлении но когда добавили viewpager к coustomview и созданный pagerAdapter не показывает макет в представлении пейджер. как это исправить ??

/ ******************************************


*********************************************** /

Пользовательский вид:

Класс Slider расширяет ViewGroup {

private ViewPager viewPager;



public Slider(Context context) {
    super(context);
    Init();
}

public Slider(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    Init();
}

public Slider(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    Init();
}


private void Init(){

    viewPager = new ViewPager(getContext());
    viewPager.setAdapter(new PagerAdapter());
    addView(viewPager);


}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    int final_width = 0 , final_height = 0;


    int width = MeasureSpec.getSize(widthMeasureSpec);
    int height = MeasureSpec.getSize(heightMeasureSpec);

    int width_mode = MeasureSpec.getMode(widthMeasureSpec);
    int height_mode = MeasureSpec.getMode(heightMeasureSpec);


    if(width_mode == MeasureSpec.EXACTLY){
        final_width = width;
    }else if (width_mode == MeasureSpec.AT_MOST){
        final_width = 200;
    }else {
        final_width = 200;
    }


    if(height_mode == MeasureSpec.EXACTLY){
        final_height = height;
    }else if (height_mode == MeasureSpec.AT_MOST){
        final_height = 200;
    }else {
        final_height = 200;
    }


    setMeasuredDimension(final_width,final_height);
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {


    viewPager.layout(l,t,r,b);

}

}

Адаптер пейджера:

класс PagerAdapter расширяет android.support.v4.view.PagerAdapter {

private int[] layout = {
        R.layout.slide,
        R.layout.slide,
        R.layout.slide
};

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
    View view = LayoutInflater.from(container.getContext()).inflate(layout[position], container, false);
    container.addView(view);
    return view;
}

@Override
public int getCount() {
    return 3;
}

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

@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    View view = (View) object;
    container.removeView(view);
}

}

...