I think it is a bug, personally. Paint has a similar problem with measureText(); it doesn't account for different screen densities correctly.
My solution is similar to Kostya's: I handle it manually using the reported density of the display. String On Jun 2, 1:38 pm, Kostya Vasilyev <[email protected]> wrote: > Eric, > > I ran into same issues with my app. > > First of all, small text can be made more readable by calling > paint.setAntiAlias(true); > > Second, I do my own text scaling based on the device's screen density. > Something like: textSize = unscaledSize * screenDensity / 160.0f. Note > that default density for pre-1.6 devices is 160 dpi. > > Screen density is available as canvas.getDensity(), which first appeared > in API 4 (Android 1.6). > > Since I want my app run on Android 1.5, I wrote a simple helper method > using Java reflection that works on all versions of Android. > > public static int getScreenDensity(Canvas canvas) { > if (gScreenDensity == 0) { > gScreenDensity = 160; > > Class<? extends Object> canvasClass = canvas.getClass(); > try { > Method getDensityMethod = canvasClass.getMethod("getDensity"); > gScreenDensity = (Integer) getDensityMethod.invoke(canvas); > > } catch (NoSuchMethodException x) { > } catch (InvocationTargetException x) { > } catch (IllegalArgumentException e) { > } catch (IllegalAccessException e) { > } > } > > return gScreenDensity; > > } > > static int gScreenDensity = 0; > > Hope this helps. > > 02.06.2010 16:24, eehouse пишет: > > > > > > > My app uses a custom View that does a lot of text drawing. To ensure > > my text is always readable I've been using the result of calling > > getTextSize() on a newly-created Paint() instance as the minimum > > size. Docs say calling 'new Paint()' sets attributes like text size > > to default values. > > > One of my European users just got a Motorola Milestone phone and > > reports that some text is unreadably small. I believe I've duplicated > > this using the WVGA854 skin in a 2.1 emulator. Run in that emulator > > my app's smallest TextViews look fine, but the text I'm drawing myself > > using Paint instances where I haven't changed the text size from the > > default is too small. I confirmed this by commenting out all > > setTextSize() calls in my View subclass: the text becomes too small to > > read comfortably. > > > It feels like a bug to me that the default text size on Paint can be > > significantly smaller than default TextView size on some devices. Is > > it a known bug? > > > In the meantime, can someone suggest a way to size Paint text so that > > it's readable on any device regardless of screen resolution? I > > believe there are APIs to translate inches to pixels, so perhaps I > > could hard-code a size in inches. Or I could measure the laid-out > > height of a TextView and store that as an invisible preference. But > > is there a better way, say an API I haven't found? (I suspect it'd be > > enough if Paint were like TextView in allowing you to specify the > > units in which text size is set, but it doesn't.) > > > Thanks, > > > --Eric > > -- > Kostya Vasilev -- WiFi Manager + pretty widget --http://kmansoft.wordpress.com -- 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

