自定義view onMesure處理方案

這種感覺很通用



@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        // 獲取寬-測量規(guī)則的模式和大小        
        int widthMode = MeasureSpec.getMode(widthMeasureSpec);
        int widthSize = MeasureSpec.getSize(widthMeasureSpec);

        // 獲取高-測量規(guī)則的模式和大小      
        int heightMode = MeasureSpec.getMode(heightMeasureSpec);
        int heightSize = MeasureSpec.getSize(heightMeasureSpec);

        /** 設(shè)置wrap_content的默認(rèn)寬 / 高值 默認(rèn)寬/高的設(shè)定并無固定依據(jù),根據(jù)需要靈活設(shè)置
          *類似TextView,ImageView等針對wrap_content均在onMeasure()對設(shè)置默認(rèn)寬 / 高值有特殊處理,
          *具體讀者可以自行查看  */     
        int mWidth = 400;
        int mHeight = 400;

          // 當(dāng)模式是AT_MOST(即wrap_content)時設(shè)置默認(rèn)值
        if (widthMode == MeasureSpec.AT_MOST && heightMode == MeasureSpec.AT_MOST) {
          setMeasuredDimension(mWidth, mHeight);

        // 寬 / 高任意一個模式為AT_MOST(即wrap_content)時,都設(shè)置默認(rèn)值       
        } else if (widthMode == MeasureSpec.AT_MOST) {
            setMeasuredDimension(mWidth, heightSize);

        } else if (heightMode == MeasureSpec.AT_MOST) {
            setMeasuredDimension(widthSize, mHeight);

        }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容