разрыв строк 3 элементов textView в соответствии с их длиной - PullRequest
1 голос
/ 30 октября 2019

Проблема с этой проблемой пользовательского интерфейса:

1) У меня есть 3 textViews, который я хочу сохранить в одном родительском представлении.

2) Я хочу заполнить как можно больше элементовкак можно меньше строк.

3) Разделитель существует только между двумя элементами.

Предлагаемый алгоритм:

Получить ширину контейнераПолучить для каждого элемента неопределенную ширину (Для этогоМне нужно создать собственный textView для переопределения onMeasure()).

Вычислить и оставить в стороне "last line remaining width".

Если следующий textView может поместиться в последней ширине оставшейся строки:

  • сделать последний разделитель видимым
  • поместить его в ту же строку и перейти к следующему элементу textView

else:

  • открытьновая строка с remaining width = (container's width - current item's width)
  • делает последний разделитель невидимым
  • помещает текущий элемент в эту строку (разрыв строки при необходимости)

У меня есть два варианта:

  1. Для использования вертикальной линейной разметки горизонтальных линейных разметок.
  2. Чтобы использовать макет ограничения.

Я бы заполнил список списков и заполнил бы горизонтальные линейные макеты с помощью кода.

Или заполнил макет ограничения с помощьюкод (менее общий, и я думаю, более сложный).

Есть ли более простое решение?

enter image description here

1 Ответ

1 голос
/ 30 октября 2019

Если я правильно понимаю ваши требования, я считаю, библиотека FlexboxLayout от Google должна делать именно то, что вы хотите.

Вы, вероятно, используете FlexboxLayout (вместоRecyclerView с FlexboxLayoutManager), но приятно отметить, что эта библиотека также поддерживает утилизацию.

...