Поддерживает ли Blackberry подстрочный надстрочный индекс? Я нашел ветку форума BlackBerry " Подстрочный и надстрочный индекс в RichTextField ", но я не могу получить доступ к статье базы знаний BlackBerry. Как я могу реализовать надстрочный и подстрочный индекс в LabelField?
1 ответ
Если есть проблема с доступом к базе знаний BlackBerry (например, из некоторых стран?), Вот содержимое этой страницы (опубликовано @MSohm из RIM):
RichTextField изначально не поддерживает подстрочный индекс, надстрочный индекс или несколько цветов. Поддерживаются разные шрифты, размеры и форматирование шрифтов (например, полужирный, курсив, подчеркнутый). Следующие ссылки объясняют это дополнительно.
Как - Форматировать текст в RichTextField Номер статьи: DB-00124
http: // supportforums. blackberry.com/t5/Java-Development/Format-text-in-a-RichTextField/ta-p/445038Как сделать - изменить цвет текста в поле Артикул: DB-00114
http: //supportforums.blackberry.com/t5/Java-Development/Change-the-text-color-of-a-field/ta-p/442951
Если вы все еще хотите сделать это, вы можете попробовать создать подкласс RichTextField
или LabelField
и переопределить метод paint()
. Там вы можете изменить размер шрифта и сдвинуть координату y текста. Это зависит от того, насколько универсальным вы хотите сделать решение. Возможно, вы могли бы опубликовать дополнительную информацию о вашей проблеме?
Но в качестве очень простого жестко запрограммированного примера следующий код создаст LabelField
, который выведет: " CO 2 "
private class SubscriptLabelField extends LabelField {
private int _subscriptTop = 0;
private int _subscriptFontSize = 0;
public SubscriptLabelField(Object text, long style) {
super(text, style);
setFont(getFont());
}
public void setFont(Font newFont) {
super.setFont(newFont);
// we use a subscript that's located at half the normal font's height,
// and is 2/3 as tall as the normal font
int h = newFont.getHeight();
_subscriptTop = h / 2;
_subscriptFontSize = 2 * h / 3;
super.invalidate();
}
protected void layout(int width, int height) {
super.layout(width, height);
// add more space at the bottom for the subscript
int w = getExtent().width;
int h = getExtent().height;
int extraHeight = _subscriptFontSize - (getFont().getHeight() - _subscriptTop);
setExtent(w, h + extraHeight);
}
public void paint(Graphics g) {
// here we hardcode this method to simply draw the last char
// as a "subscript"
String text = getText();
String normalText = text.substring(0, text.length() - 1);
g.drawText(normalText, 0, 0);
// how much space will the normal text take up, horizontally?
int advance = g.getFont().getAdvance(normalText);
// make the subscript a smaller font
Font oldFont = g.getFont();
Font subscript = getFont().derive(Font.PLAIN, _subscriptFontSize);
g.setFont(subscript);
String subscriptText = text.substring(text.length() - 1);
g.drawText(subscriptText, advance, _subscriptTop);
// reset changes to graphics object just to be safe
g.setFont(oldFont);
}
}
А затем используйте это так:
public SubscriptScreen() {
super(MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR);
SubscriptLabelField textField = new SubscriptLabelField("C02", LabelField.NON_FOCUSABLE);
// TODO: this line is just to show the adjusted boundaries of the field -> remove!
textField.setBackground(BackgroundFactory.createSolidBackground(Color.LIGHTGRAY));
add(textField);
}
Который дает:
Похожие вопросы
Новые вопросы
blackberry
BlackBerry предлагает множество инструментов разработки, включая BlackBerry Dynamics SDK, Cylance REST API, BlackBerry Workspaces API и SDK, BlackBerry QNX development и BlackBerry UEM REST API. Рассмотрите возможность добавления BlackBerry SDK, который вы используете как дополнительный тег.