Отформатируйте ссылку в строке, чтобы открыть ее в браузере в мобильном проекте Flex - PullRequest
0 голосов
/ 12 января 2012

Я получаю строки с сервера, которые выглядят примерно так:

This is normal text followed by a link;
http://www.google.com
Links might also look like this;
http://google.com/whatever

Эта строка задается как текстовое значение в искре TextArea. Чего я хотел бы добиться, так это A. текст выделяется и B. пользователь может щелкнуть по нему, и он откроется в системном браузере.

Любая помощь будет высоко ценится!

Редактирование: использование StyleableTextField приводит к появлению опечатки в Flex 4.6. Я пробовал самый простой текст HTML, как этот;

StyleableTextField(newsStoryArea.textDisplay).htmlText = "TextArea <b>bold</b><i>italic</i>."

который бросает;

TypeError: Error #1034: Type Coercion failed: cannot convert
spark.components.supportClasses::StyleableStageText@fc3d0a1 to 
spark.components.supportClasses.StyleableTextField.

Edit: Отличный Adobe! "htmlText в мобильных скинах

Вы не можете использовать свойство htmlText в мобильных приложениях. "

На той же странице (http://help.adobe.com/en_US/flex/mobileapps/WS19f279b149e7481c698e85712b3011fe73-7fff.html#WS19f279b149e7481c7c94ce7c12b30152f48-7ffc), они говорят, что не следует использовать TLF в мобильных оболочках, поэтому htmlText не работает, и TLF не должен использоваться. По сути, только два варианта (если не существует третьего, о котором я не знаю) для правильного форматирования ссылок не должны использоваться на мобильных устройствах. Отлично!

Любые рекомендации?

Ответы [ 2 ]

1 голос
/ 12 января 2012

Если бросить

TypeError: Error #1034: Type Coercion failed: cannot convert
spark.components.supportClasses::StyleableStageText@fc3d0a1 to 
spark.components.supportClasses.StyleableTextField.

тогда ваш компонент использует скин по умолчанию, который использует StyleableStageText. И это не поддерживает свойство htmlText.

Исходя из названия вашего компонента "newsStoryArea", я могу предположить, что это spark.components.TextArea. Есть два мобильных скина для spark.components.TextArea - по умолчанию (я не помню его полное имя) и spark.skins.mobile.TextAreaSkin. Класс spark.skins.mobile.TextAreaSkin использует StyleableTextField, у которого есть свойство htmlText. Таким образом, вы можете указать, что ваш текстовый компонент использует этот скин. В результате вы сможете использовать htmlText.

Также, если textDisplay будет невыбираемым, textDisplay не будет отправлять TextEvent.LINK (если вам это нужно).

1 голос
/ 12 января 2012

Вы можете использовать TextFlow:

textArea.textFlow = TextConverter.importToFlow("<a href='http://www.google.com'>This is normal text followed by a link;<br/>http://www.google.com</a>", TextConverter.TEXT_FIELD_HTML_FORMAT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...