下面是我的代碼爲我定製View
:爲什麼onMeasure()在我的自定義視圖中調用兩次?
XML佈局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.project.summary"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/BgColor">
<com.project.summary.customview.CustomView
android:id="@+id/customView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:colorValue="@color/textRed"
app:textString="This the Custom View!!!"
app:textSize="20sp"
/>
</LinearLayout>
代碼在我CustomView.java
:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Log.e("140117", "onMeasure()"+this.getHeight()+"||"+this.getWidth());
}
代碼的測試活動:
public class CustomViewActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.customview_layout);
}
}
logcat輸出:
01-17 13:47:01.203: E/140117(11467): onMeasure()0||0 01-17 13:47:01.243: E/140117(11467): onMeasure()28||212
我搜索的StackOverflow,但沒有人給出一個明確的答案。有人能幫助我嗎?
這是正常的事情。如果你在'RelativeLayout'中,你幾乎肯定會測量兩次或更多。 – kcoppock
@ kcoppock:謝謝你的回覆,你能告訴我它爲什麼會打兩次嗎?觸發器是什麼?當設置我的customview權重屬性時,onMeasure()被調用四次!爲什麼? – linguowu
看到這個答案:http://stackoverflow.com/a/4069077/321697 – kcoppock