ListView滚动条的奇怪行为

时间:2011-08-26 08:02:16

标签: android listview typeface

我有一个ListView,我想填充每个只包含一个TextView的项目。关于这些TextView的问题是他们需要使用自定义字体(不是三种内置字体之一)。我无法通过XML设置自定义字体(字体),因此唯一的方法是在我的适配器的tv.setTypeface()方法中为所有TextView-s调用getView()

现在问题是我想要使用的字体具有非常不同的行间距(默认情况下),因此生成的文本看起来比使用默认字体呈现的相同文本大(假设我们使用相同的textSize两种字体)。这种特殊性影响ListView测量文本整体大小(高度)的方式(以及滚动条的大小),认为文本是使用默认字体呈现的(实际上并非如此)。

当我向上或向下滚动ListView时,文本的整体大小会不断重新计算,导致滚动条改变其长度(看起来很奇怪)。我想知道是否有办法告诉ListView使用我的自定义字体之前调用getView()方法(即在文本测量期间)?

2 个答案:

答案 0 :(得分:0)

这是ListView的默认行为。尝试将smoothScrollbar设置为true。在XML中:

android:smoothScrollbar="true"

或代码:

listView.setSmoothScrollbarEnabled(true);

答案 1 :(得分:0)

看来我想要实现的目标是不可能的。仅仅因为除了那些目前可见的列表项之外没有列表项。因此,ListView确实对项目的高度一无所知,然后对它们进行了充气和填充文本。

它能做什么 - 只是根据创建时提供给LIstView的项目布局做出假设。