带有底点的Android ViewPager

我想在我的ViewPager中添加3个底点,如下所示。

http://img2.mukewang.com/5dd639530001ad3004300084.jpghttp://img3.mukewang.com/5dd6395600017dd103900093.jpghttp://img1.mukewang.com/5dd6395f00017ebc04140072.jpg

我使用FragmentActivity并支持库ViewPager。



慕田峪7331174
浏览 424回答 3
3回答

慕丝7291255

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) {            }        });

繁华开满天机

我的手工解决方案:在布局中:<LinearLayout&nbsp; &nbsp; &nbsp; &nbsp; android:orientation="horizontal"&nbsp; &nbsp; &nbsp; &nbsp; android:layout_width="wrap_content"&nbsp; &nbsp; &nbsp; &nbsp; android:layout_height="wrap_content"&nbsp; &nbsp; &nbsp; &nbsp; android:id="@+id/dots"&nbsp; &nbsp; &nbsp; &nbsp; />并在活动中private final static int NUM_PAGES = 5;private ViewPager mViewPager;private List<ImageView> dots;@Overrideprotected void onCreate(Bundle savedInstanceState) {&nbsp; &nbsp; // ...&nbsp; &nbsp; addDots();}public void addDots() {&nbsp; &nbsp; dots = new ArrayList<>();&nbsp; &nbsp; LinearLayout dotsLayout = (LinearLayout)findViewById(R.id.dots);&nbsp; &nbsp; for(int i = 0; i < NUM_PAGES; i++) {&nbsp; &nbsp; &nbsp; &nbsp; ImageView dot = new ImageView(this);&nbsp; &nbsp; &nbsp; &nbsp; dot.setImageDrawable(getResources().getDrawable(R.drawable.pager_dot_not_selected));&nbsp; &nbsp; &nbsp; &nbsp; LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LinearLayout.LayoutParams.WRAP_CONTENT,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LinearLayout.LayoutParams.WRAP_CONTENT&nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp; &nbsp; &nbsp; dotsLayout.addView(dot, params);&nbsp; &nbsp; &nbsp; &nbsp; dots.add(dot);&nbsp; &nbsp; }&nbsp; &nbsp; mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void onPageSelected(int position) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectDot(position);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void onPageScrollStateChanged(int state) {&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });}public void selectDot(int idx) {&nbsp; &nbsp; Resources res = getResources();&nbsp; &nbsp; for(int i = 0; i < NUM_PAGES; i++) {&nbsp; &nbsp; &nbsp; &nbsp; int drawableId = (i==idx)?(R.drawable.pager_dot_selected):(R.drawable.pager_dot_not_selected);&nbsp; &nbsp; &nbsp; &nbsp; Drawable drawable = res.getDrawable(drawableId);&nbsp; &nbsp; &nbsp; &nbsp; dots.get(i).setImageDrawable(drawable);&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP