在我的项目中,我们需要让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和拇指的边框有足够的边距,这使滚动条看起来好多了。
答案 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)。
我不知道如何获取组件的默认滚动条以使用子类。我没有必要解决这个问题,因为我们正在为自己添加滚动条。快速谷歌搜索没有找到任何答案。