Question

I have a ListView which I want to populate with items each of which contains only one TextView. The thing about these TextView-s is that they need to use custom font (not the one of three built-in fonts). I can not set custom font (typeface) via XML so the only way to do it is call tv.setTypeface() for all TextView-s in the getView() method of my Adapter.

Now the problem is that the font I want to use has the pretty much different line spacing (by default) so the resulting text appears larger than the same text rendered using default font (providing we use the same textSize for two fonts). This particulary affects the way ListView measures the overall size (height) of my text (and thus the size of scrollbar) thinking that text is rendered using default typeface (while in reality it is not).

When I scroll my ListView up or down the overall size of the text is constanly recalculated resulting in scrollbar changing its length (which looks weird). I wonder if there a way to tell ListView to use my custom font before the call to getView() method (i.e. during text measurement)?

Was it helpful?

Solution 2

It appears that the thing I am trying to achieve is impossible. Simply because there is no list item exist except for those which are visible at the moment. So the ListView does know nothing about the height of its items before they were inflated and populated with text.

What it can do - is only to make assumptions based on the item layout supplied to LIstView upon creation.

OTHER TIPS

It is default behaviour of ListView. Try to set smoothScrollbar to true. In XML:

android:smoothScrollbar="true"

or in code:

listView.setSmoothScrollbarEnabled(true);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top