zoukankan      html  css  js  c++  java
  • ViewPager设置自适应

    项目中用到ViewPage做轮播图操作,类似于下面这种:


      大部分朋友都有类似的需求,创建一个轮播图ViewPage,宽度填充父窗体match_parent,高度自适应wrap_content,但是ViewPage使用的时候会有一个问题,ViewPager无法wrap_content,一旦wrap_content则全屏,估计是系统的测量方法有问题;

    其他也有类似的需求,比如一个图片列表,如下:

     


          有类似的需求,要求保持图片宽高比,然后宽度拉伸至屏幕宽度,这个时候,就必须用到自定义控件了,在此,分享一段自己写的自定义测量

        1. @Override
          protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){
              //获取到宽度的模式
              int width_mode=MeasureSpec.getMode(widthMeasureSpec);
              //获取到屏幕的宽度
              int width_size=MeasureSpec.getSize(widthMeasureSpec);
              //高度的大小
              int height_size=0;
              //说明是填充父窗体
              double scale=203.0/381.00;
              if(width_mode==MeasureSpec.EXACTLY){
                  height_size=(int)(width_size*scale+0.5f);
              }
          widthMeasureSpec=MeasureSpec.makeMeasureSpec(width_size,MeasureSpec.EXACTLY);
          heightMeasureSpec=MeasureSpec.makeMeasureSpec(height_size,MeasureSpec.EXACTLY);
            super.onMeasure(widthMeasureSpec,heightMeasureSpec);
          }    
     这段代码的意思是获取系统宽高,然后计算比例 
     double scale=203.0/381.00;
    

      这个需要各位童鞋自己去设定图片的宽高,一般是直接找美工美眉确定好上线后的图片大小,然后写入进去; 

      最后强行设置该view的宽高,实现了等比缩放,不仅能填充,还能自适应比例

      该代码在所有的view上都有效,不限于viewpager 

    最后,希望能够帮助大家在Android开发的路上越走越远!

    静以修身 俭以养德
  • 相关阅读:
    刷水题(四)
    C++如何调试
    刷水题(三)
    刷水题(二)
    虔诚的墓主人(BZOJ1227)(洛谷P2154)解题报告
    同余方程组(EXCRT)(luogu4777)
    数据结构——树状数组详解
    程序自动分析(NOI2015)(洛谷P1955)题解
    小胖的奇偶(Viojs1112)题解
    小胖守皇宫(VIJOS P1144 )题解
  • 原文地址:https://www.cnblogs.com/Android-MR-wang/p/5070060.html
Copyright © 2011-2022 走看看