#codenameone
#codenameone
Вопрос:
Я заметил две стрелки в облегченном Pickers
режиме, они, похоже, используются для перехода из одного поля в другое.
Это поведение действительно глючит в моем редакторе и вызывает ошибки кодирования у некоторых клиентов. Есть ли способ скрыть / удалить их? Возможно ли это во всем приложении?
Я попытался переопределить Picker
и установить возврат isEditable
к false
, поскольку, казалось, это контролировало добавление этих стрелок, но это ничего не дало.
Заранее спасибо!
РЕДАКТИРОВАТЬ: в данном конкретном случае я использую облегченный Picker
с типом PICKER_TYPE_STRINGS
, но я бы хотел контролировать это поведение для всех облегченных Pickers
.
Средство выбора создается из a PickerComponent
с static createStrings
помощью метода.
Вот скриншот этого конкретного средства выбора, и кнопки, от которых я хочу избавиться, находятся внутри красного прямоугольника :
РЕДАКТИРОВАТЬ 2: после некоторого анализа кода я обнаружил, что эти стрелки отображаются, если TabIterator
из вложенного Form
возвращают предыдущий и следующий компоненты для этого средства выбора. Я действительно не понимаю, как мне приснилось, что IsEditable контролировал это!
Можно переопределить getTabIterator
из Form
, но конструктор TabIterator
(вложенный класс Form
) private
настолько недоступен в наших классах, и он нам нужен, потому null
TabIterator
что при его вызове нет проверки экземпляра, поэтому мы не можем вернуться null
.
Я пытался принудительно ввести параметр getTabIterator
to null
, но методы getNext
and getPrevious
TabIterator
возвращаются null
только в том случае, если компонент null
и компонент List
(переданный как второй аргумент TabIterator
конструктора) пуст. Но, поскольку конструктор есть private
, List
он никогда не бывает пустым, поскольку он заполнен getTabIterator
.
Тупик?
Комментарии:
1. Скриншот поможет…
2. И тип средства выбора, который вы использовали на какой ОС / устройстве. Код, который вы использовали и т. Д.
3. Я добавил некоторые подробности и скриншот, я использую эти средства выбора на iOS, Android и симуляторе.
Ответ №1:
В основном это предназначено для плавного перехода между несколькими полями ввода. Кажется, это не подключается, как должно быть. Вероятно, вам следует подать RFE, чтобы мы могли предоставить способ настроить это.
Вы можете подать запрос RFE в систему отслеживания проблем здесь: https://github.com/codenameone/CodenameOne/issues /
Возможным обходным решением может быть вызов remove()
итератора табуляции, пока он не станет пустым.
Комментарии:
1. Использование remove для
TabIterator
until empty запаздывает, но будет работать, лучший обходной путь (который, по словам Стива, является правильным способом отключения стрелок) — использовать селектор компонентов и установить для всех предпочтительных индексов вкладок значение -1. Код для быстрого выполнения:ComponentSelector.select("*", form).each(c-> c.setPreferredTabIndex(-1));
. Если все tabIndex равны -1, значениеTabIterator
пусто, а стрелки исчезли.