Hi, I'm trying to write a custom component that should scale as follows: - some preferred size (e.g. 30) if wrap_content is specified - fill parent if fill_parent is specified - exact size if some size is specified.
To do so, I have tried to override the onMeasure() method accordingly (slightly adapted from http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/), as shown in the code below. This seems to work fine as long as I put the component into a LinearLayout of a normal activity. However, once I change the theme of the acitivty to dialog (android:theme="@android:style/Theme.Dialog") in the manifest, my onMeasure() method seems to be called infinitely, i.e. the Log.d() output (see code) fills up my logcat. The component is drawn correctly, though. Can somebody tell me, how I can fix this behavior, such that onMeasure is called only once (or twice or so), even when putting it into an activity with dialog theme? Thanks, Michael ------------------------- Code: @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { Log.d(TAG, "Width spec: " + MeasureSpec.toString(widthMeasureSpec)); Log.d(TAG, "Height spec: " + MeasureSpec.toString(heightMeasureSpec)); int widthMode = MeasureSpec.getMode(widthMeasureSpec); int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); int chosenWidth = chooseDimension(widthMode, widthSize); int chosenHeight = chooseDimension(heightMode, heightSize); setMeasuredDimension(chosenWidth, chosenHeight); } private int chooseDimension(int mode, int size) { if (mode == MeasureSpec.AT_MOST || mode == MeasureSpec.EXACTLY) { return size; } else { // (mode == MeasureSpec.UNSPECIFIED) return getPreferredSize(); } } // in case there is no size specified private int getPreferredSize() { return 30; } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

