|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Динамическое изменение высоты TextField
Подскажите, пожалуйста решение. Столкнулся с такой проблемой: требуется создать текстовое поле с постоянной шириной, скажем, в 200 пикселей. В поле добавляется какой-либо текст. Нужно, чтобы поле автоматчиески изменило высоту. Казалось бы, задача не такая сложная, но textHeight, к сожалению, возвращает всегда высоту одной строки
Может, я изобретаю велосипед и есть какой-то штатный способ?
__________________
Дело не в тебе |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
ставишь ему width = 200 ... и вроде всё.
а, ещё wordWrap = true;
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 27.08.2010 в 15:40. |
|
|||||
Цитата:
Вернее, я плохо описал проблему. Мне нужно сделать, чтобы текст по умолчанию был 150 пикселей в ширину, если текст больше 150, но меньше 200, то он должен растягивать поле по горизонтали. Если больше 200, то переносится в несколько строк и по ширине стать ровно стоько, сколько нужо (но не меньше 150) - вот тут-то и покрадывается проблема: когда тест становится могострочным, невозможно определить его реальную ширину (т.е. шириной самой широкой строки) т.к. textWidth возвращает длину всего текста
__________________
Дело не в тебе |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Я там дописал - wordWrap = true и textWidth возвращает ширину самой широкой строки. Не оч. понял, что хотите, но вродь должно хватить. Если что скейлить по горизонтали - scaleX ещё есть.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Ну, я вижу, что плохо объяснил.
Скажем, проблема такая: Нужно, чтобы поле автоматически изменяло высоту (этого добиться понятно как - выше перечислено) и автоматически уменьшало ширину до ширины самой длинной строки. Вот в этом как раз проблема, т.к. textWidth возвращает не длину самой длинной строки, а всего текста, если бы он стоял в одну строку.
__________________
Дело не в тебе |
|
|||||
incvizitor, думал б этом, но не будет работать, т.к. этот код установит ширину в 150 при наличии нескольких строк, а в тексте может быть слово длинее 150 пикселей. Соответственно, оно разобьется. В идеале в таком случае ширина должна устанавливаться как ширина самого длинного слова.
Добавлено через 5 минут Кстати, а можно как-то сделать, чтобы текст переносился по словам, а не по буквам? А то бьющиеся слова - это как-то вообще не весело Добавлено через 50 минут В общем, правильынй ответ, хоть и извращеный: split'им текст исходного текстового поля по пробелу, в цикле содаем с таким же форматированием текстовые поля с каждым из этих слов, смотрим ширину самого длинного (естественно с autosize). Присваиваем ширину самого длинного слова исходном полю. Единственная проблема - почему-то полученное значение примерно на 15 пикселей меньше реального. Блин, во флеше постоянно какие-то проблемы с текстом были. Ужас просто.
__________________
Дело не в тебе |
Часовой пояс GMT +4, время: 16:05. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|