<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 1. 前言 在自定義View的時候總是會涉及到View大小的測量,而且自己總是很粗糙的來處理其大小。而當遇到ViewGroup的時候,卻總是缺點意思。故而這里想比較系統的整理一下在onMeasure的一些知識點。 # 2. 知識回顧 ## 2.1 ViewGroup繪制流程 我們都知道,ViewGroup的繪制流程分為三步:**測量**、**布局**、**繪制**。對應onMeasure()、onLayout()、onDraw() 函數。這三個函數的作用分別如下。 * onMeasure():測量當前控件的大小。 * onLayout():使用 layout()函數對所有子控件進行布局。 * onDraw():根據布局的位置繪圖。 對應的,自定義ViewGroup的三個步驟為: * 測量它的每個子View的大小,計算出自身的寬高; * 根據實際需求來放置其中的每個子View的位置; * 重寫觸摸事件以及其余的方法; ### 2.1.1 onMeasure() ``` override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { super.onMeasure(widthMeasureSpec, heightMeasureSpec) } ``` 這里可以看見傳入了兩個Int類型的參數widthMeasureSpec和heightMeasureSpec。它們是指父類傳遞過來給當前View的一個建議值,即想把當前 View 的尺寸設置為寬widthMeasureSpec、高 heightMeasureSpec。至于它們的組成這里不再詳細介紹,其實也就是測量模式(前2位)+測量寬度(后30位)。簡單來說XML布局和這里的測量模式的對應關系如下: | XML布局 | 測量模式 | | --- | --- | | wrap_content | AT\_MOST | | match_parent | EXACTLY | | 具體值 | EXACTLY | 注意到:當我們得到的測量模式為EXACTLY 的時候,就不需要處理了,因為這是在xml中指定的,不應該更改。 AT\_MOST的時候,需要進行計算。 那么,我們在onMeasure中需要完成對每個子View大小的測量,然后計算出自己需要多大的寬高。這里可以簡單的給出一個示例:
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看