У меня возникли некоторые трудности с проблемой макета Android. Я пытаюсь сделать форму для заполнения пользователями. Эта форма определяется программно (из предоставленной сервером конфигурации, которую я не могу контролировать), и поэтому я должен реализовать ее программно. Форма имеет несколько различных типов полей, но для простоты мы можем предположить, что все они являются простыми текстовыми полями (EditText).
В настоящее время у меня есть форма, реализованная как вертикальный LinearLayout. Для каждого поля у меня есть горизонтальный LinearLayout, который содержит TextView для метки поля и EditText для пользователя, чтобы ввести значение для поля. У меня есть EditText для заполнения ширины с помощью LinearLayout.LayoutParams(FILL_PARENT, WRAP_CONTENT).
Это хорошо работает, когда метка TextView короткая, но когда она длинная, EditText становится очень маленьким, и пользователю сложно ввести значение. В идеале я хотел бы, чтобы EditText был не менее половины ширины экрана с оберткой метки TextView, если это необходимо. Я пробовал TableLayout с TableRows, но у меня все еще были трудности. Я также предпочел бы не навязывать сетку и, таким образом, тратить место на строки с короткими метками (при условии, что другие требования выполнены, я гибкий в этом). Я бы попробовал что-то вроде FlowLayout, чтобы заставить EditText переноситься на следующую строку, но это не поддерживается на Android.
Любые предложения о том, как я могу сделать эту работу лучше? Решения на основе XML будут приняты, если я смогу перенести их на программный подход. Я также хотел бы сделать это как можно более гибким в отношении размера экрана и ориентации, поэтому это означает отсутствие жесткого кодирования любой ширины.
Заранее спасибо.