我有一个ListView,我想填充每个只包含一个TextView
的项目。关于这些TextView
的问题是他们需要使用自定义字体(不是三种内置字体之一)。我无法通过XML设置自定义字体(字体),因此唯一的方法是在我的适配器的tv.setTypeface()
方法中为所有TextView-s调用getView()
。
现在问题是我想要使用的字体具有非常不同的行间距(默认情况下),因此生成的文本看起来比使用默认字体呈现的相同文本大(假设我们使用相同的textSize
两种字体)。这种特殊性影响ListView
测量文本整体大小(高度)的方式(以及滚动条的大小),认为文本是使用默认字体呈现的(实际上并非如此)。
当我向上或向下滚动ListView
时,文本的整体大小会不断重新计算,导致滚动条改变其长度(看起来很奇怪)。我想知道是否有办法告诉ListView
使用我的自定义字体之前调用getView()
方法(即在文本测量期间)?
答案 0 :(得分:0)
这是ListView的默认行为。尝试将smoothScrollbar
设置为true
。在XML中:
android:smoothScrollbar="true"
或代码:
listView.setSmoothScrollbarEnabled(true);
答案 1 :(得分:0)
看来我想要实现的目标是不可能的。仅仅因为除了那些目前可见的列表项之外没有列表项。因此,ListView确实对项目的高度一无所知,然后对它们进行了充气和填充文本。
它能做什么 - 只是根据创建时提供给LIstView的项目布局做出假设。