0
В моем приложении мне пришлось реализовать пользовательский компонент, который расширен от VerticalFieldManager, и этот менеджер содержит строки, которые являются HorizontalFieldManager. Проблема в OS 4.5 LabelField слева показывает только одну строку текста. Вот код и изображения. LabelField различное поведение между OS 4.5 и 6.0
class Row extends HorizontalFieldManager{
private LabelField key;
private LabelField value;
public Row(String left,String right){
key = new LabelField(left + ": ",Field.NON_FOCUSABLE | Field.NON_SPELLCHECKABLE | TextField.NO_LEARNING | RichTextField.USE_TEXT_WIDTH){
public int getPreferredWidth() {
return Math.min((Display.getWidth()-20)/2,super.getPreferredWidth());
}
};
key.setPadding(0, 0, 0, 10);
key.setFont(Fonts.NORMAL);
add(key);
value = new LabelField(right,Field.NON_SPELLCHECKABLE | TextField.NO_LEARNING | Field.FOCUSABLE);
value.setPadding(0, 10, 0, 0);
value.setFont(Fonts.BOLD);
add(value);
}
public int getPreferredHeight() {
return Math.max(key.getHeight(), value.getHeight());
}
public int getPreferredWidth() {
return Display.getWidth()-20;
}
protected void sublayout(int arg0, int arg1) {
super.sublayout(arg0, arg1);
setExtent(getPreferredWidth(), getPreferredHeight());
}
}
Поместите свои «LabelFields» внутри «VerticalFieldManagers», а затем добавьте их в «HorizontalFieldManager» каждой строки. Кстати, почему вы используете 'RichTextField.USE_TEXT_WIDTH' в ярлыке ключа? LabelField не распространяется от rtf, поэтому он может дать неожиданные результаты. То же самое с 'TextField.NO_LEARNING'. –
С использованием только стилей 'Field.NON_FOCUSABLE' и' Field.FOCUSABLE' и размещения LabelFields внутри VFM, я попытался и получил тот же результат. –
Конечно, это не имеет ничего общего с этими флагами. Проблема в том, что ребята из RIM меняют поведение с каждой версией. –