自定义view的大小设置模板

原创 2016年08月29日 15:49:33


    private int getHeightSize(int heightmeasureSpec) {
        int size = 0;
        int spec_mode = MeasureSpec.getMode(heightmeasureSpec);
        int spec_size = MeasureSpec.getSize(heightmeasureSpec);
        if (spec_mode == MeasureSpec.EXACTLY) {
            System.out.println("exactly");
            size = spec_size;
        } else if (spec_mode == MeasureSpec.AT_MOST) {
            System.out.println("at_most");
            size = textSize;
        } else if (spec_mode == MeasureSpec.UNSPECIFIED) {
            System.out.println("unspecified");
            size = 100;
        }
        return size;
    }


    private int getWidthSize(int widthmeasureSpec) {
        int size = 0;
        int spec_mode = MeasureSpec.getMode(widthmeasureSpec);
        int spec_size = MeasureSpec.getSize(widthmeasureSpec);
        if (spec_mode == MeasureSpec.EXACTLY) {
            System.out.println("exactly");
            size = spec_size;
        } else if (spec_mode == MeasureSpec.AT_MOST) {
            System.out.println("at_most");
            size = textSize * text.length();
        } else if (spec_mode == MeasureSpec.UNSPECIFIED) {
            System.out.println("unspecified");
            size = 100;
        }
        return size;
    }


    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        this.setMeasuredDimension(this.getWidthSize(widthMeasureSpec), this.getHeightSize(heightMeasureSpec));

    }



模板说明:

父       match_parent     match_parent            match_parent            wrap_content      wrap_content        wrap_content       200px                  200px                    200px    
子       match_parent     100px                        wrap_content             match_parent     100px                    wrap_content       100px                  match_parent        wrap_content
结果    exactly(fill)          exactly(100px)          at_most(fill)            at_most    (fill)     exactly(100xp)      at_most(fill)           exactly(100px)    exactly(200px)       at_most(200xp)




会执行哪种模式,由这个表来决定
MeasureSpec.EXACTLY:父视图希望子视图的大小应该是specSize中指定的。
MeasureSpec.AT_MOST:子视图的大小最多是specSize中指定的值,也就是说不建议子视图的大小超过specSize中给定的值。
MeasureSpec.UNSPECIFIED:我们可以随意指定视图的大小。

相关文章推荐

android Zxing 扫描区域的大小设置和自定义扫描view

自己改造的Zxing 扩大扫描范围  实现自定义扫描布局 主要是CodeView 里面很详细的代码自定义view  CameraManager里面的四个参数 MIN_FRAME_WIDTH 、MIN_...

Android 自定义view-如何设置TextView drawableLeft 图片大小?

1.TextView需要设置背景或者边框时需要编写大量的selector,稍微修改一下样式又得编写一个新的selector,这个实在不能忍! 2.使用原生TextView的drawableLeft能够...

自定义View时,如何设置字体的大小和间距,和XML布局达到一样的效果

问题1、我们再Android布局的时候会涉及到不同分辨率的手机显示效果不同。2、如果我们一律用XML布局,字体用SP,间距用DP,可以很好地显示TextView。3、如果我们一律用自定义的布局,设置好...

如何设定视频图像窗口大小并添加自定义View

这个在有的应用中需要的。比如视频缩放,然后再视频播放的画面下面添加一些View。 修改这个方法configureVideoBackground()即可。 如何添加自定义view呢?...
  • ggtaas
  • ggtaas
  • 2014年11月01日 23:46
  • 1972

Android自定义视图系列----------- 计算view大小(measure)

1.android绘制view的过程简单描述            简单描述可以解释为:计算大小(measure),布局坐标计算(layout),绘制到屏幕(draw);            下面看...

iOS--MVC、自定义大小可变的view(纯手写)

采用MVC自定义一个view,效果:

Android UI设计之<十二>自定义View,实现绚丽的字体大小控制控件FontSliderBar

了解iOS的同学应该知道在iOS中有个UISliderBar控件,在iPhone手机中的设置文字大小中使用了该控件。近来产品提的需求中有一个是更改APP中部分字体大小,虽然技术难度不大但工作量还是有的...

Android自定义ViewGroup View的大小和坐标控制

除非你总是需要一个100×100像素的控件,否则,你必须要重写onMeasure。 onMeasure方法在控件的父元素正要放置它的子控件时调用。它会问一个问题,“你想要用多大地方啊?”,然后传入两...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义view的大小设置模板
举报原因:
原因补充:

(最多只允许输入30个字)