ButtonField не отображается в HorizontalFieldManager
Я добавил buttonField в приложение HorizontalFieldManager в Blackberry. Я добавил его после добавления EditField. Тем не менее, buttonField не появляется. Ниже мой код
HorizontalFieldManager hfm = new HorizontlFieldManager();
BasicEditField edit = new BasicEditField("Label", "UP");
ButtonField button = new ButtonField("Search");
hfm.add(edit);
hfm.add(button);
add(hfm);
4 ответа
Этот ответ не решит вашу проблему, но важно отметить, что ваш код абсолютно в порядке, и в этом нет ничего плохого.
HorizontalFieldManager
Класс полон ошибок, появившихся в OS 5.0, и на сегодняшний день (последняя версия - 7.x) RIM не собирается исправлять ошибки.
В качестве примера, вот проблема с ошибкой в BB Developer Issue Tracker и до сих пор не решена. Я имел дело с hfm в своем последнем проекте, а также столкнулся с проблемами, которые мне пришлось обойти, создав своего собственного менеджера, аналогично тому, как показывает ответ Шашанка. Вы можете найти больше примеров по созданию собственного менеджера в SO. Также здесь освещены основы.
В настоящее время это единственное решение, так как RIM переходит на BB 10 (C++), и они сбрасывают API Java, поэтому не ожидайте, что они исправят это в ближайшее время. Даже если бы они были, это не будет исправлено, но в последней версии ОС, которая бесполезна, так как устройства BB редко обновляются.
Вам нужно установить ширину поля редактирования и ширину кнопки
protected void layout(int width,int height)
{
super.layout(Display.getWidth() * 3 /4 , getpreferedHeight());
super.setExtent(Display.getWidth() * 3/4 , getpreferedHeight());
}
Для использования кнопки
protected void layout(int width,int height)
{
super.layout(Display.getWidth() /4 , getpreferedHeight());
super.setExtent(Display.getWidth() /4 , getpreferedHeight());
}
Я думаю, что Шашанк был в основном на правильном пути, но для более полного примера того, как изменить ButtonField
ширина, я бы порекомендовал посмотреть на этот ответ.