2016-09-22 2 views
1

Использование CodenameOne, У меня есть форма, которую пользователь должен заполнить. Однако все компоненты на самом деле представляют собой Контейнеры, которые представляют собой пользовательские функции. В качестве примера у меня был бы TextField рядом с Button на Container, и я бы использовал это Container как «Component». Это позволяет мне создавать более сложные функции, объединяя существующие Components. Хорошим примером того, где это необходимо, является поле пользовательского ввода даты, существующее из 3 TextFields, или комбинация TextFields и ComboBoxes.CodenameOne установка индексации полей для виртуальной клавиатуры

У меня есть «Поле», которое имеет функциональные возможности для контакта Component. ContactsComponent

Это все служит как единое подразделение, позволяющее пользователю выбрать контакт или заполнить его самостоятельно. Buttons open Dialog всплывающие окна и т. Д.

Мои проблемы возникают, когда пользователь использует клавиатуру Android. Если это контакт Object будет вторым «полем», и пользователь нажимает кнопку «Далее» на клавиатуре Android, приложение не знает, в каком поле нужно сосредоточиться. Кроме того, если одно из полей: ComboBox или Button, и пользователь нажимает рядом с ним, чтобы достичь этого Component, клавиатура не закрывается и вместо этого удаляет кнопку «Далее», заменяя ее кнопкой возврата или селектором смайликов ,

Ниже приведен пример ситуации: Form Example

Пользователь должен нажать на первом поле, клавиатура появляется, и когда пользователь нажимает рядом, кнопки Далее клавиатуры пропадает, так как непосредственное следующее поле происходит с быть Button или ComboBox.

Есть ли способ изменить индекс фокусировки или опустить некоторые поля, когда-либо получающие фокус таким образом? Я пробовал сделать всю вещь Component, но это не позволяет мне комбинировать другие Components. Даже если можно сделать родителя Container a Component, как я могу решить эту проблему?

ответ

0

Поведение по умолчанию заключается в использовании «следующей фокусировки вниз» для этой функции, поэтому просто используйте setNextFocusDown(nextTextField) для каждого из компонентов. Обратите внимание, что ComboBox не будет работать должным образом, хотя вы можете изменить его на AutoCompleteTextField.

+0

Это, похоже, не имело никакого эффекта. Я попробовал добавить nextFocusDown на уровне 'Container' и' Form', но безрезультатно. – Propagandian

+0

Вызовите это в текстовых полях, чтобы указать следующее текстовое поле для каждого –

Смежные вопросы