public static Pair<View, EditText> createTextField(final Context context, final String currentValue, final TextParam label, @Nullable final TextParam suffix, final int inputType, final int minLines, final int maxLines) {
        final DialogEdittextBinding binding = DialogEdittextBinding.inflate(LayoutInflater.from(context));
        if (StringUtils.isNotBlank(currentValue)) {
            binding.input.setText(currentValue);
        }
        if (label != null) {
            binding.inputFrame.setHint(label.getText(context));
        }
        if (suffix != null) {
            binding.inputFrame.setSuffixText(suffix.getText(context));
        }
        if (maxLines > 1) {
            binding.input.setSingleLine(false);
            binding.input.setLines(minLines);
            binding.input.setMaxLines(maxLines);
            binding.input.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
            binding.input.setVerticalScrollBarEnabled(true);
            binding.input.setMovementMethod(ScrollingMovementMethod.getInstance());
            binding.input.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
            binding.input.invalidate();
            Dialogs.moveCursorToEnd(binding.input);
        } else {
            binding.input.setSingleLine();
        }
        if (inputType >= 0) {
            binding.input.setInputType(inputType);
        }
        return new Pair<>(binding.getRoot(), binding.input);
    }
creates a column layout and returns it. Provides the option to specify individual layouts per column.

@param ctx               context to use for creating views
@param root              optional. If given, then the column layout will be created IN the given view instead of returning a new one.
@param columnCount       number of columns the layout shall have
@param withSeparator     if true, a vertical separator line will be drawn between columns
@param columnViewCreator will be called for each column index (0 - "columnCount-1") and shall return the columns content view.
                         May return null for some columns, in which case those are empty
@return new ViewGroup holding the column layout. If "root" was not null, then "root" is returned.
main/src/main/java/cgeo/geocaching/ui/ViewUtils.java