나는 도움을 바랍니다. 함수 호출 onMeasure 내 문제가. 내 XML 파일 (RelativeLayput) - 3 요소 : TextView, RelativeLayout 그리고 그들을 내 수업에 포함 시키십시오. 이제 내 주요 활동 클래스와 내 여기 것에 클래스Android : 틀린 onMeasure - 많은 전화
public class MainActivity extends Activity implements OnTouchListener {
final String LOG_TAG = "myLogs";
TextView tv1;
UiMyClass uimc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv1 = (TextView) findViewById(R.id.mytext2);
tv1.setOnTouchListener(this);
String str1 = "qwertyy";
uimc = (UiMyClass) findViewById(R.id.myclass1);
Log.d(LOG_TAG, "Open1-0" + " " + str1);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
int evX = (int) event.getX();
int evY = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
tv1.setText("uyq8qyw");
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
break;
}
Log.d(LOG_TAG, "Touch_GS");
return true;
}
}
public class UiMyClass extends View {
final String LOG_TAG = "myLogs";
public UiMyClass(Context context, AttributeSet attrs) {
super(context, attrs);
this.setBackgroundResource(R.drawable.ic_launcher);
Log.d(LOG_TAG, "Initialization_00");
}
@Override
protected void onMeasure(int x, int y) {
setMeasuredDimension(100, 50);
Log.d(LOG_TAG, "Measure_02");
}
}
문제를 만들 수 있습니다. 응용 프로그램이 시작되면 onMeasure가 수행되지만 그 이유는 8 회입니다 (로그에 표시됨). 그건 그렇고, 내 요소의 인클로저를 다른 레이어에서 보려면, 측정은 2^(밀폐 된 레이어의 양 + 2) 시간 수행됩니다. (즉, 1 8, 2 - 16) TextView 이벤트를 누르면 onTouch가 수행되지만 onMeasure도 시작됩니다. 어떻게 시작하는 것이 더 이상 이루어지지 않았고, 일반적으로 그것은 단지 한 번 시작되었습니다. 사전에 나는 도움에 감사한다.
레이아웃이 변경되거나보기가 다시 그려 질 때마다 OnMeasure가 호출됩니다. – Raghunandan