自定义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自定义View] 计算View尺寸方法onMeasure()

计算View尺寸方法onMeasure()
  • Joe_LQ
  • Joe_LQ
  • 2016年05月21日 01:21
  • 2828

如何测量自定义View时View的大小

简介: 在自定义view的时候,其实很简单,只需要知道3步骤: 1.测量——onMeasure():决定View的大小 2.布局——onLayout():决定View在ViewGro...
  • fwt336
  • fwt336
  • 2016年10月31日 09:51
  • 1233

自定义View之尺寸的转化

自定义View之尺寸的转化  在Android的布局文件中,往往使用dp作为控件的宽度和高度尺寸,但是在Java代码中,文字大小或者组件尺寸的单位却是像素px,这两个单位有明显的区别:dp和屏幕的密度...
  • qq_26971803
  • qq_26971803
  • 2016年07月21日 23:03
  • 688

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

采用MVC自定义一个view,效果:
  • wwh19940131
  • wwh19940131
  • 2016年03月03日 17:09
  • 1163

AlertDialog自定义View的用法+如何改变弹出框的大小

android系统定义了弹出框,支持我们自定义布局: public AlertDialog getEditCustomDialog() { LayoutInflater inflater = g...
  • baidu_nod
  • baidu_nod
  • 2014年07月11日 11:59
  • 4504

android自定义View设置大小的方法

onMeasure使用的是父类的处理方法,如果我们需要解决 自定义View的大小,可以尝试下面的方法 view plaincopy to clipboardprint? @Override  ...
  • JiangYouJiShiYou
  • JiangYouJiShiYou
  • 2012年10月25日 02:03
  • 13239

用Xib自定义一个View

1. 新建一个继承于View的类,再建一个有view的xib文件,选中这个xib的file’s Owner,修改Custom Class . 2. 把size选成FreeForm,这样你就可以随意的...
  • squallmouse
  • squallmouse
  • 2016年07月20日 14:23
  • 3537

设置自定义View的大小

可通过复写onMeasure()函数实现:  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // ...
  • vipnl411
  • vipnl411
  • 2013年08月20日 19:54
  • 416

android 自定义View之View的测量(onMeasure()方法)

在自定义控件的过程中,系统在绘制View前,必须对View进行测量,已使后面的onLayout(设置View的放置位置)能够顺利进行。而对VIew的测量的过程则是在onMeasure()中进行的。可能...
  • gongzhiyao3739124
  • gongzhiyao3739124
  • 2016年09月14日 19:12
  • 1729

Android酱油笔记之自定义View的宽高

import …… public class GameView extends View{ …… //自定义view的宽高 @Override protected void onMeas...
  • slow_liao
  • slow_liao
  • 2012年12月24日 19:02
  • 5661
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义view的大小设置模板
举报原因:
原因补充:

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