2009-12-23 3 views
1

우리 프로젝트에서 scollbars를 Windows 스크롤 막대처럼 보이게 만들 필요가있었습니다.Flex 3에서 스크롤 막대 썸의 minHeight를 설정하는 방법이 있나요?

따라서 수직 스크롤바의 엄지 손가락에 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

질문을 이해하는 데 어려움을 겪고 있습니다. 몇 가지 코드 샘플을 가지고 자세히 설명해 주시겠습니까? – invertedSpear

답변

1

ScrollThumb 클래스를 확장 할 수 있어야합니다 (또는 실제로 용감하게 생각한다면 편집 할 수 있어야합니다). 거기에는 최소 10 개의 높이 설정이 있습니다. 이는 매우 적습니다.

그런 다음 scrollBar 클래스를 확장하고 해당 새 확장 ScrollThumb 클래스를 사용하도록 thumbUpSkin의 스타일을 설정해야합니다.

마지막으로 새 확장 scrollBar 클래스를 사용하도록 드롭 다운 컨트롤을 확장해야합니다.

좀 더 구체적 일지 모르지만 클래스를 확장하고 아직 무언가를 무시하는 데 익숙하지 않습니다. 어쩌면 누군가 내 대답을보고 좋은 코드 예제를 제공 할 것입니다.

다른 모든 클래스를 확장 할 필요가 없으므로 클래스를 편집 할 때 장점이 있지만 단점은 SDK에서 컴파일 된 프로젝트의 모든 ScrollBar가 새로운 최소 높이 설정을 사용한다는 것입니다. "원시"SDK (어쩌면 동료에 의해)로 컴파일 된 것이라면 그 SDK에있는 설정이 무엇이든간에 앞으로는 정말 어려운 문제를 일으킬 수 있습니다.

0

다음은 스크롤 썸의 최소 크기를 적용한 솔루션입니다. HScrollBar와 VScrollBar를 확장하고 setScrollProperties 메서드를 오버라이드하여 최소 크기를 설정합니다. HScrollBar 및 VScrollBar를 모두 들어

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; 
     } 
    } 

} 
} 

당신이 explicitMinHeight이 (두 버전에 explicitMinWidth을 설정하지 않음) 설정 : 여기에 HScrollBar 버전입니다.

구성 요소의 기본 스크롤 막대를 사용하여 서브 클래스를 사용하는 방법을 모르겠습니다. 우리가 스크롤바를 추가했기 때문에 그 문제를 해결할 필요가 없었습니다. 빠른 google 검색으로 답이 나오지 않았습니다.

1

클래스를 재정의하는 대신 ScrollBar의 하위 항목 인 scrollThumb에 대한 참조를 가져 오는 것이 좋습니다. 그것은 ScrollThumb의 인덱스에 따라입니다하지만 난 그 변경 될 수 의심하고 플렉스 클래스를 재정의하는 것보다 간단로

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

이 적합하지 않습니다.