Как мы можем получить текст в методе paint (расширенный с использованием поля) с разным размером шрифта в том же поле.?Различные размеры шрифта в одном поле
ответ
Если вы действительно хотите сделать это, изменив размер шрифта внутри переопределенном paint()
метода, вы могли бы использовать что-то вроде этого:
public TextScreen() {
super(MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR);
final int MAX_FONT_SIZE = 24;
// this is the font style to use, but the SIZE will only apply to the
// beginning of the text
Font f = Font.getDefault().derive(MAX_FONT_SIZE);
TextField text = new TextField(Field.NON_FOCUSABLE) {
public void paint(Graphics g) {
char[] content = getText().toCharArray();
Font oldFont = g.getFont();
int size = MAX_FONT_SIZE;
// use the baseline for the largest font size as the baseline
// for all text that we draw
int y = oldFont.getBaseline();
int x = 0;
int i = 0;
while (i < content.length) {
// draw chunks of up to 3 chars at a time
int length = Math.min(3, content.length - i);
Font font = oldFont.derive(Font.PLAIN, size--);
g.setFont(font);
g.drawText(content, i, length, x, y, DrawStyle.BASELINE, -1);
// skip forward by the width of this text chunk, and increase char index
x += font.getAdvance(content, i, length);
i += length;
}
// reset the graphics object to where it was
g.setFont(oldFont);
}
};
text.setFont(f);
text.setText("Hello, BlackBerry font test application!");
add(text);
}
Обратите внимание, что я должен был сделать поле NON_FOCUSABLE
, потому что если вы обманываете поле, изменяя шрифты в paint()
вот так, синий курсор не будет соответствовать базовому тексту. Вы также можете удалить курсор, переопределив drawFocus()
и ничего не делая.
Вы не указали какие-либо требования к фокусу, поэтому я не знал, чего вы там хотели.
Если вы готовы рассмотреть другие альтернативы, я думаю, что RichTextField лучше подходит для того, чтобы вы могли изменять размер шрифта (или другие текстовые свойства) в одном и том же поле. Если все, что вы хотите, - это постепенно сокращать текст, как это делает мой пример, эта реализация paint()
, вероятно, прекрасна. Если вы хотите выбрать определенные слов в своем поле, чтобы увеличить шрифт (например, с помощью HTML <span>
тегов), то RichTextField, вероятно, лучший способ пойти.
Вот результат моего примера кода:
- 1. sIFR: Различные размеры шрифта, полученные
- 2. Установите различные размеры шрифта для разных строк в текстовом поле
- 3. Различные размеры шрифта в боковой панели
- 4. r ggplot2: различные размеры шрифта в легенде
- 5. Различные размеры шрифта и ориентации в TextBox в WPF (C#)
- 6. Различные размеры шрифтов на сайте
- 7. Различные размеры шрифта для разных устройств в Xcode 6
- 8. ExtJS4 - Элемент отображения поля, различные размеры шрифта для текста внутри
- 9. JFreeChart различные шрифты или размеры шрифта в заголовке
- 10. Различные размеры шрифта при печати в Chrome и Safari
- 11. iOS Различные размеры шрифта в одном классе размеров для разных устройств
- 12. Различные размеры файлов .swf
- 13. Изменить размер шрифта в одном текстовом поле
- 14. Используйте два шрифта в одном поле ввода
- 15. Как установить разные размеры шрифта в одном заголовке html?
- 16. Различные размеры шрифта для UILabel с использованием адаптивного макета
- 17. Различные размеры шрифта для uibutton и uilabel для iphone/ipad
- 18. Различные размеры шрифта на разных устройствах такого же класса
- 19. Как проверить различные размеры шрифта (динамический тип) на часах?
- 20. Есть ли способ изменить различные размеры (x, y) шрифта?
- 21. C# - размеры шрифта
- 22. Различные размеры шрифтов в графике python
- 23. Различные размеры экрана
- 24. Различные размеры для ячеек
- 25. Различные размеры экрана устройства
- 26. rbindlist data.tables различные размеры
- 27. Различные размеры распределений тем
- 28. StoryBoard Различные размеры экрана iOS
- 29. TcPDF: Различные размеры страниц
- 30. Различные размеры кнопок