런타임 CSS가 변경 될 때 Flex의 멀티 라인 텍스트가 다시 계산되지 않습니다.

StackOverflow https://stackoverflow.com/questions/310729

  •  10-07-2019
  •  | 
  •  

문제

로드 시간 고려 사항을 위해 Flex 응용 프로그램에서 런타임 CSS 파일을 사용하고 있습니다.

멀티 라인 텍스트 컨트롤에 문제가 있습니다.

<mx:Text id="txtDescription" selectable="false"
styleName="imageRolloverButtonTextDark" width="100%" textAlign="center"
text="{_rolloverText}"/>

CSS 스타일 시트가 텍스트 스타일을 올바르게로드했을 때 높이는 다시 계산되지 않습니다. 단일 라인 필드 인 것 같습니다.

참고 : 컨트롤은 실제로 보이지 않으며 롤오버에 의해 트리거됩니다. 따라서 스타일 시트가로드되지 않았고 표준 시스템 텍스트를 얻는 지 실제로 신경 쓰지 않습니다. 나는 그것이로드되었을 때 올바른 높이가되기를 원한다.

도움이 되었습니까?

해결책

이 문제가있는 다른 사람의 경우, 내가 찾은 솔루션은 mx.controls.text를 확장하는 사용자 정의 구성 요소를 만드는 것이 었습니다.

그런 다음 StyleChange () 메소드를 무시하고 스타일이 적용되면 텍스트 필드의 InvalidatedIsplayList () 메소드를 명시 적으로 호출하십시오.

Styleis가 변경되면 자동으로 호출되어야하지만 No ... 어떤 이유로 Flex 3.5에서는 그렇지 않습니다.

public class textObject extends text {// ... Public Function StyleChanged (StyleProp : String) : void {invalidatedisplaylist (); }}

내가 잃어버린 시간을 항상 구하기를 바랍니다.

다른 팁

텍스트에 대한 Adobe 문서에 따라

텍스트 제어 크기

플렉스 크기 텍스트 제어 : 다음과 같이 :

높이와 너비 속성 모두에 대한 픽셀 값을 지정하면 컨트롤 크기를 초과하는 텍스트가 테두리에서 클립됩니다.

명시 적 픽셀 너비를 지정하지만 높이가없는 경우 Flex는 텍스트를 너비에 맞게 감싸고 필요한 선 수에 맞게 높이를 계산합니다.

백분율 기반 너비와 높이가없는 경우 Flex는 텍스트를 감싸지 않으며 높이는 리턴 문자 수에 의해 결정된 선수 수와 같습니다.

높이와 너비 만 지정하면 높이 값이 너비 계산에 영향을 미치지 않으며 플렉스 크기는 최대 선의 너비에 맞게 컨트롤을 크기에 맞 춥니 다.

일반적으로 텍스트가 긴 경우 픽셀 기반 너비 속성을 지정해야합니다. 텍스트가 변경 될 수 있고 텍스트 제어가 응용 프로그램에서 항상 동일한 공간을 차지하는지 확인하려면 가장 큰 예상 텍스트에 맞는 명시 적 높이 및 너비 속성을 설정하십시오.

따라서 내가 이것을 다루는 데 사용했던 트릭은 컨테이너가 너비를 제한하는 모든 컨테이너, 일반적으로 직계 부모로부터 바인딩 표현을 통해 텍스트가 너비를 얻는 것입니다.

예를 들어

<mx:Canvas id="box" width="100%" backgroundColor="Red">
    <mx:Text width="{box.width}" text="{someReallyLongString}" />
</mx:Canvas>

100%대신 고정 픽셀 너비를 사용할 수 있습니까? 이전에 동적 텍스트 컨트롤에서 100%가 잘못 계산하는 데 문제가있었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top