为了账号安全,请及时绑定邮箱和手机立即绑定

带有底点的Android ViewPager

带有底点的Android ViewPager

慕田峪7331174 2019-11-21 15:14:10
我想在我的ViewPager中添加3个底点,如下所示。我使用FragmentActivity并支持库ViewPager。
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

viewPager.addOnPageChangeListener(new OnPageChangeListener() {

            @Override

            public void onPageSelected(int position) {


                switch (position) {

    case 0:

        img_page1.setImageResource(R.drawable.dot_selected);

        img_page2.setImageResource(R.drawable.dot);

        img_page3.setImageResource(R.drawable.dot);

        img_page4.setImageResource(R.drawable.dot);

        break;


    case 1:

        img_page1.setImageResource(R.drawable.dot);

        img_page2.setImageResource(R.drawable.dot_selected);

        img_page3.setImageResource(R.drawable.dot);

        img_page4.setImageResource(R.drawable.dot);

        break;


    case 2:

        img_page1.setImageResource(R.drawable.dot);

        img_page2.setImageResource(R.drawable.dot);

        img_page3.setImageResource(R.drawable.dot_selected);

        img_page4.setImageResource(R.drawable.dot);

        break;


    case 3:

        img_page1.setImageResource(R.drawable.dot);

        img_page2.setImageResource(R.drawable.dot);

        img_page3.setImageResource(R.drawable.dot);

        img_page4.setImageResource(R.drawable.dot_selected);

        break;


    default:

        break;

    }



            }


            @Override

            public void onPageScrolled(int arg0, float arg1, int arg2) {


            }


            @Override

            public void onPageScrollStateChanged(int arg0) {


            }

        });


查看完整回答
反对 回复 2019-11-21
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

我的手工解决方案:


在布局中:


<LinearLayout

        android:orientation="horizontal"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/dots"

        />

并在活动中


private final static int NUM_PAGES = 5;

private ViewPager mViewPager;

private List<ImageView> dots;


@Override

protected void onCreate(Bundle savedInstanceState) {

    // ...

    addDots();

}


public void addDots() {

    dots = new ArrayList<>();

    LinearLayout dotsLayout = (LinearLayout)findViewById(R.id.dots);


    for(int i = 0; i < NUM_PAGES; i++) {

        ImageView dot = new ImageView(this);

        dot.setImageDrawable(getResources().getDrawable(R.drawable.pager_dot_not_selected));


        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(

                LinearLayout.LayoutParams.WRAP_CONTENT,

                LinearLayout.LayoutParams.WRAP_CONTENT

        );

        dotsLayout.addView(dot, params);


        dots.add(dot);

    }


    mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override

        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }


        @Override

        public void onPageSelected(int position) {

            selectDot(position);

        }


        @Override

        public void onPageScrollStateChanged(int state) {

        }

    });

}


public void selectDot(int idx) {

    Resources res = getResources();

    for(int i = 0; i < NUM_PAGES; i++) {

        int drawableId = (i==idx)?(R.drawable.pager_dot_selected):(R.drawable.pager_dot_not_selected);

        Drawable drawable = res.getDrawable(drawableId);

        dots.get(i).setImageDrawable(drawable);

    }

}


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 424 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信