有没有办法在Flex 3中设置滚动条拇指的minHeight

时间:2009-12-23 21:22:17

标签: flex coding-style scrollbar

在我的项目中,我们需要让scollbar看起来像Windows滚动条。

因此我在垂直滚动条的拇指上有一个thumbIcon,但是如果我在组合框中得到太多项目,滚动条会变得很繁琐。这是因为thumbIcon和thumbSkin边框之间的边距太小。

有没有办法设置thumbSkin的最小高度,以便我可以确保在那里总是有一个边距,即使有太多的项目,它总是看起来很好?

Fiddly scroll bar http://img97.imageshack.us/img97/7057/nomargins.gif

上面的图片,看到拇指?通过thumbIcon我的意思是3条水平线。此图标与拇指边缘之间的上下边距太小。

Normal scroll bar http://img15.imageshack.us/img15/5527/margins.gif

这是正常的滚动条,thumbIcon和拇指的边框有足够的边距,这使滚动条看起来好多了。

3 个答案:

答案 0 :(得分:1)

你应该能够扩展(或者如果你真的很勇敢,编辑)ScrollThumb类,那里的最小高度设置为10,我同意这个设置非常小。

然后你需要扩展scrollBar类并设置thumbUpSkin的样式以使用新的扩展ScrollThumb类。

最后,您需要扩展下拉控件以使用新的扩展scrollBar类。

我会更具体,但我对扩展课程和覆盖其他内容感到不舒服,或许更好的人会在这里看到我的答案,并提供一个很好的代码示例。

编辑类有一个好处,因为您不必扩展所有其他涉及的类,但缺点是在SDK上编译的项目中的每个ScrollBar都将使用新的最小高度设置,如果它是用“原始”SDK编译的(可能是由同事编写的),无论SDK中的设置是什么,都可能导致将来出现一些非常困难的故障。

答案 1 :(得分:1)

替换类的替代方法是将scrollThumb作为ScrollBar的子项引用。

        var scrollThumb:ScrollThumb = hScrollBar.getChildAt(2) as ScrollThumb;
        scrollThumb.minHeight = 50;

这并不理想,因为它取决于ScrollThumb的索引,但我怀疑它可能会改变,而且比覆盖flex类更简单。

答案 2 :(得分:0)

以下是我发现的用于强制滚动缩略图的最小尺寸的解决方案。我扩展了HScrollBar和VScrollBar并覆盖了setScrollProperties方法,以设置最小大小。这是HScrollBar版本:

package your.package
{
import mx.controls.HScrollBar;
import mx.core.mx_internal;

use namespace mx_internal;

public class LargeThumbHScrollBar extends HScrollBar
{
    public function LargeThumbHScrollBar()
    {
        super();
    }

    public override function setScrollProperties(pageSize:Number,
                                        minScrollPosition:Number,
                                        maxScrollPosition:Number,
                                        pageScrollSize:Number = 0):void
    {
        super.setScrollProperties(pageSize, minScrollPosition, maxScrollPosition, pageScrollSize);

        if (scrollThumb) {
            scrollThumb.explicitMinHeight = 100;
        }
    }

}
}

对于HScrollBar和VScrollBar,您可以设置explicitMinHeight(不要在任一版本中设置explicitMinWidth)。

我不知道如何获取组件的默认滚动条以使用子类。我没有必要解决这个问题,因为我们正在为自己添加滚动条。快速谷歌搜索没有找到任何答案。