Предположим, мне нужно, чтобы пользователь мог вводить список строк где-то в настройках приложения. Скажем, это список URL. Внутри строк не должно быть пробелов, запятых или точек с запятой.
Самая простая вещь, о которой я до сих пор думал, - это создать большой многострочный EditText с подсказкой для пользователя «Разделять строки пробелами», и каждый раз, когда пользователь нажимает OK, использовать split («») для извлечения массива строк.
Проблема с этим простым решением состоит в том, что иногда строки не достаточно длинные, чтобы заполнить всю ширину EditText, и> 1 строки отображаются визуально в 1 строке. Иногда URL-адреса слишком длинные, поэтому "www." остается на одной строке, а остальная часть адреса появляется на следующей строке. Все выглядит беспорядочно, и пользователь теряет отслеживание, где отдельные URL начинаются и заканчиваются в строке.
Еще одно простое решение: длинный однострочный, где все строки разделены; с дополнительными пробелами после. VisualStudio использует это в настройках, и я нахожу это плохим, так как вы не видите все строки сразу и вынуждены много двигаться в этой длинной строке (еще труднее с неуклюжим сенсорным экраном).
Более дорогое решение: вертикально прокручиваемый список однострочных EditTexts, которые генерируются программно при каждом открытии экрана настроек. Также потребуется кнопка «+», которая создает новый EditText, и кнопка «-» рядом с каждым из существующих EditText.
РЕДАКТИРОВАТЬ: Другая идея: показать все строки в обычном ListView с кнопкой «+» в последнем ряду. Когда вы нажимаете «+», он превращается в EditText с двумя кнопками справа: «ОК», «Отмена». «ОК» сохранит вновь добавленную строку.
Если пользователь нажимает на любой из элементов в списке, строка превращается в EditText с кнопками «ОК» и «Удалить». «ОК» сохраняет изменения, «Удалить» удаляет элемент. На кнопках «ОК» и «Удалить» лучше использовать слова вместо слов.
Или, ну, все строки могут быть показаны в ListView, и каждый раз, когда пользователь нажимает на элемент, появляется дополнительное всплывающее окно с EditText для редактирования строки и тремя кнопками ниже: «ОК», «Отмена» и "Удалить".
Думал ли я в правильном направлении? Знаете ли вы какие-либо существующие шаблоны / библиотеки / решения, которые эффективно решают эту проблему на сенсорных экранах?